Simple Pixelbot for Diablo 2 Resurrected written in python and opencv.

Related tags

Deep Learning botty
Overview

Simple Pixelbot for Diablo 2 Resurrected written in python and opencv. Obviously only use it in offline mode as it is against the TOS of Blizzard to use it in online mode!

Join the Discord Channel for help and discussions.

Watch the video

Supported features

  • Run Pindle, Eldtritch, Shenk
  • Pickit with per item config.
  • Stash picked up items (using all 4 stashes)
  • Prebuff
  • Revive Merc if dead
  • Heal at Malah if needed
  • Take potions and chicken if in trouble during fights
  • Check for death. In this case start another game and pick up corpse.
  • Supported builds: Sorceress (Blizz, Light, Meteor), Hammerdin
  • Debug color checker to easily verify your settings
  • Runs in Hyper-V

Getting started

1) Settings

2) Supported builds

Soceress

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 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 with Enigma. Dont think I have to explain much here.

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 hell when starting a hell game.

5) Start Botty

Download the a prebuilt release here. Start run.exe in the botty folder, go to D2R window and press the "resume" key. Move to your D2R window and press "f11". You can always force stop botty with f12.

Development

Check out the development.md docu for infos on how to build from source and details of the project structure and code.

param.ini

[general] Descriptions
monitor Select on which monitor D2R is running in case multiple are available
min_game_length_s Games must have at least this length, will wait in hero selection for if game is too quick (to avoid server connection issues)
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
color_checker_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
[routes] Descriptions
run_pindle Run Pindle 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.
[char] Descriptions
type Build type. Currently only "sorceress" or "hammerdin" is supported
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 Health percentage when chicken (leaving game)
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.
show_belt Hotkey for "show belt"
potion1 Hotkey to take poition in slot 1
potion2 Hotkey to take poition in slot 2
potion3 Hotkey to take poition in slot 3
potion4 Hotkey to take poition 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)
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.
[sorceress] Descriptions
teleport Hotkey for teleport
skill_right Hotkey for skill that is used on right mouse btn (e.g. Blizzard)
skill_left Hotkey for skill that is used on left mouse btn (e.g. Glacial Spike)
forzen_armor Hotkey for frozen armor (or any of the other armors)
telekinesis Hotkey for telekinesis
[hammerdin] Descriptions
teleport Hotkey for teleport
blessed_hammer Hotkey for Blessed Hammer
concentration Hotkey for Concentration
holy_shield Hotkey for Holy Shield
redemption Hotkey for redemption
[items] Descriptions
item_type Select "1" if item should be picked up, "0" if not.

Some distant future plans

  • Running chaos with AI algo
  • Emulating Keyboard and Mouse with Arduino

Support this project

This project is free. Support it by contributing in any technical way, giving feedback, PRs or by submitting issues. That being said, I am not above accepting some pixel currency :) So if you want to send some fg my way to keep my dopamine high, here is my jsp: jojo22.

Comments
  • CharacterCapabilities errors

    CharacterCapabilities errors

    Botty Version Current master as of 2022-02-17

    Hello, thank you for making such a good program. My character is a Sorceress, and although teleport is a basic skill, there are many cases where it does not progress because it is not charged.( CharacterCapabilities(can_teleport_natively=False, can_teleport_with_charges=True))

    I set with the f1 key for teleport. and also did F9 for auto graphical setting. T.T This error isn't always happened. but it happens once every 4-5 times.

    What could be the reason??

    [2022-02-18 08:54:22,130] DEBUG Waiting for templates: ['A5_TOWN_1', 'A5_TOWN_0'] [2022-02-18 08:54:28,803] DEBUG Found Match: A5_TOWN_1 (69.7% confidence) [2022-02-18 08:54:29,007] INFO Capabilities: CharacterCapabilities(can_teleport_natively=False, can_teleport_with_charges=True) [2022-02-18 08:54:29,221] INFO Health Manager is now pausing [2022-02-18 08:54:29,766] DEBUG Will pickup: {'rejuv': 1, 'health': 1, 'mana': 1} [2022-02-18 08:54:29,945] INFO Teleport charges ran out. Need to repair [2022-02-18 08:54:29,946] DEBUG Traverse from a5_town_start to a5_larzuk [2022-02-18 08:54:37,454] DEBUG Waiting for templates: ['REPAIR_BTN'] [2022-02-18 08:54:37,474] DEBUG Found Match: REPAIR_BTN (97.3% confidence) [2022-02-18 08:54:39,247] DEBUG Waiting for templates: ['TP_TOME', 'TP_TOME_RED'] [2022-02-18 08:54:39,280] DEBUG Found Match: TP_TOME (92.9% confidence) [2022-02-18 08:54:41,036] DEBUG Waiting for templates: ['TP_TOME'] [2022-02-18 08:54:41,067] DEBUG Found Match: TP_TOME (93.4% confidence) [2022-02-18 08:54:42,253] DEBUG Waiting for templates: ['TP_TOME'] [2022-02-18 08:54:42,311] DEBUG Found Match: TP_TOME (92.9% confidence) [2022-02-18 08:54:43,538] INFO Run Eldritch [2022-02-18 08:54:43,539] DEBUG Traverse from a5_larzuk to a5_wp [2022-02-18 08:54:46,981] DEBUG Select A5_WP (93.7% confidence) [2022-02-18 08:54:53,092] DEBUG Waiting for templates: ['ELDRITCH_0', 'ELDRITCH_START'] [2022-02-18 08:54:53,148] INFO Health Manager is now active [2022-02-18 08:54:53,324] DEBUG Found Match: ELDRITCH_START (94.5% confidence) [2022-02-18 08:54:55,806] DEBUG Traverse from a5_eldritch_start to a5_eldritch_safe_dist [2022-02-18 08:55:04,199] ERROR Teleport is required for static pathing

    opened by JakeDDDSS 18
  •  item_cropper failed for slot_pos

    item_cropper failed for slot_pos

    When mousing over items in inventory botty gives me this error message

    [0.7.2 2022-04-15 03:44:54,828] DEBUG Inspecting inventory items [0.7.2 2022-04-15 03:44:55,903] ERROR item_cropper failed for slot_pos: (885, 367) [0.7.2 2022-04-15 03:44:56,519] ERROR item_cropper failed for slot_pos: (885, 405) [0.7.2 2022-04-15 03:44:57,168] ERROR item_cropper failed for slot_pos: (885, 443) [0.7.2 2022-04-15 03:44:57,765] ERROR item_cropper failed for slot_pos: (923, 367) [0.7.2 2022-04-15 03:44:58,347] ERROR item_cropper failed for slot_pos: (923, 405) [0.7.2 2022-04-15 03:44:58,944] ERROR item_cropper failed for slot_pos: (923, 443) [0.7.2 2022-04-15 03:44:59,541] ERROR item_cropper failed for slot_pos: (961, 367)

    this also stops botty from stashing the item.

    opened by SpheresOfMadness 14
  • Botty No Longer Detects D2R Window When Running on Host and D2R Running in VM

    Botty No Longer Detects D2R Window When Running on Host and D2R Running in VM

    Botty Version Current master as of 2022-02-17

    Describe the bug Botty can't detect the D2:R window. I reported this would be a problem. For reference here: https://github.com/aeon0/botty/pull/453

    It is related to that PR and other changes with python using the Win32 api instead of templates.

    To Reproduce Steps to reproduce the behavior:

    1. Start botty.
    2. It fails to detect the D2:R window.

    Expected behavior It detects the D2:R window.

    Additional info @AlekseyLesnoy, @VladimirMakaev, @mgleed I thought the agreed approach was that the Win32 api would be used first and if it failed it would default back to the old method. It is not defaulting back to the old method. Instead, it doesn't find the window at all and cannot start. I am only finding this now because my VM and other host machine are running compiled versions which I didn't update until today.

    Potentially related commits or pulls https://github.com/aeon0/botty/commit/95c4431206548475c8ec66d9443dd2b6dd46807e https://github.com/aeon0/botty/pull/483

    opened by codahq 14
  • Advanced pickit

    Advanced pickit

    To use the advanced itemfilter an ID-Tome needs to be in the inventory.

    This PR allows you to decide if magic, rare and uniques should be stashed or not. Furthermore you are now able to specify nested filters in your pickit.ini (Examples are in pickit.ini)

    Added several item properties in the assets folder.

    opened by RB-Development 14
  • Failed to detect if /nopickup command was a pplied or not

    Failed to detect if /nopickup command was a pplied or not

    I have Python 2.7 installed, though as the package is running from the latest built version I am not sure this is relevant.

    I downloaded https://github.com/aeon0/botty/releases/download/v0.7.3/botty_v.0.7.3.rar extracted it and then ran it, everything works as expected until I hit f11 to get the bot to start. It is installed in C:\Program Files (x86)\Diablo II Resurrected\botty_v0.7.3

    I start the bot while in the lobby and nothing happens, so I created a game and then started the bot. It starts, it sets /notpickit but does not get a confirmation back in the bot as seen below.

    Exception in thread Thread-3:
    Traceback (most recent call last):
      File "psutil\_common.py", line 441, in wrapper
    AttributeError: _cache
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "threading.py", line 973, in _bootstrap_inner
      File "threading.py", line 910, in run
      File "screen.py", line 37, in detect_window_position
      File "screen.py", line 41, in find_and_set_window_position
      File "utils\misc.py", line 54, in find_d2r_window
      File "utils\misc.py", line 43, in match
      File "psutil\__init__.py", line 624, in name
      File "psutil\_pswindows.py", line 759, in name
      File "psutil\_pswindows.py", line 690, in wrapper
      File "psutil\_pswindows.py", line 680, in convert_oserror
      File "psutil\_pswindows.py", line 688, in wrapper
      File "psutil\_common.py", line 444, in wrapper
      File "psutil\_pswindows.py", line 775, in exe
    OSError: [WinError 87] Invalid parameter: '(originated from NtQuerySystemInforma
    tion)'
    Set D2R to be always on top
    [0.7.3 2022-05-15 23:31:20,921] INFO       Start health monitoring
    [0.7.3 2022-05-15 23:31:20,922] INFO       Start Death monitoring
    [0.7.3 2022-05-15 23:31:21,043] INFO       Setting up Light Sorc
    [0.7.3 2022-05-15 23:31:21,044] INFO       Doing runs: odict_keys(['run_pindle',
     'run_shenk'])
    [0.7.3 2022-05-15 23:31:21,045] INFO       Starting game #1
    [0.7.3 2022-05-15 23:31:21,046] DEBUG      Waiting for templates: ['MAIN_MENU_TO
    P_LEFT', 'MAIN_MENU_TOP_LEFT_DARK', 'A5_TOWN_0', 'A5_TOWN_1', 'A4_TOWN_4', 'A4_T
    OWN_5', 'A3_TOWN_0', 'A3_TOWN_1', 'A2_TOWN_0', 'A2_TOWN_1', 'A2_TOWN_10', 'A1_TO
    WN_1', 'A1_TOWN_3']
    [0.7.3 2022-05-15 23:31:28,500] DEBUG      Found Match: A5_TOWN_1 (72.7% confide
    nce)
    [0.7.3 2022-05-15 23:31:28,502] DEBUG      Waiting for templates: ['A5_TOWN_0',
    'A5_TOWN_1', 'A4_TOWN_4', 'A4_TOWN_5', 'A3_TOWN_0', 'A3_TOWN_1', 'A2_TOWN_0', 'A
    2_TOWN_1', 'A2_TOWN_10', 'A1_TOWN_1', 'A1_TOWN_3']
    [0.7.3 2022-05-15 23:31:34,768] DEBUG      Found Match: A5_TOWN_1 (72.7% confide
    nce)
    [0.7.3 2022-05-15 23:31:34,970] INFO       Capabilities: CharacterCapabilities(c
    an_teleport_natively=False, can_teleport_with_charges=False)
    [0.7.3 2022-05-15 23:31:38,589] DEBUG      ['ITEM_PICKUP_ENABLED', 'ITEM_PICKUP_
    DISABLED'] not found after 1.3 seconds
    [0.7.3 2022-05-15 23:31:38,590] ERROR      Failed to detect if /nopickup command
     was applied or not
    Exception in thread Thread-7:
    Traceback (most recent call last):
      File "threading.py", line 973, in _bootstrap_inner
      File "threading.py", line 910, in run
      File "bot.py", line 156, in start
      File "bot.py", line 176, in trigger_or_stop
      File "transitions\core.py", line 899, in _get_trigger
      File "transitions\core.py", line 401, in trigger
      File "transitions\core.py", line 1201, in _process
      File "transitions\core.py", line 426, in _trigger
      File "transitions\core.py", line 435, in _process
      File "transitions\core.py", line 272, in execute
      File "transitions\core.py", line 1123, in callbacks
      File "transitions\core.py", line 1144, in callback
      File "bot.py", line 268, in on_start_from_town
      File "game_stats.py", line 111, in log_exp
      File "ui\player_bar.py", line 12, in get_experience
      File "screen.py", line 89, in convert_screen_to_monitor
    TypeError: Value after * must be an iterable, not NoneType
    
    
    opened by hutber 13
  • Find D2R window using win32api instead of pattern matching

    Find D2R window using win32api instead of pattern matching

    Why

    Currently to initialize Screen object we need to start with character selection page (or hack it). This is problematic when I want to have a faster feedback loop on testing changes. E.g. not restarting the game when testing out some pathing tweaks. Having Screen object being able to initialize any time we can write tests that navigate the bot mid game and just execute them via

    python test/test_name.py
    

    Those tests are quite easy to do and I was able to repurpose smoke_test.py to use a real screen instead of mock screen and test scenario over and over without closing the game

    How

    Win32 API allows cycling through the opened window and get the process that running them. This in turn allows getting ClientRect of the window without window border. Which is pretty much what old code did.

    Test Plan

    1. I tested that the offsets returned by both methods are exactly the same.
    2. I've also put this new code under config setting having it off by default in case it's unstable
    3. I haven't tested multi-monitor setup as I have one large monitor
    opened by VladimirMakaev 13
  • Diablo optimization & Killing Trash in Chaos Sancturay

    Diablo optimization & Killing Trash in Chaos Sancturay

    This is now the working version for tweaking Hammerdin & Implementing CS trash. It brings the success rate for killing Diablo to >85% when only clearing seals (<5 minutes run duration), and to about >70% when clearing most trash (<7 minute run duration).

    diablo.py

    • improved nodes for clearing CS Trash (A: 90%, B: 80% efficiency)
    • added function for clearing trash between pentagram & layout check (80% efficiency)
    • simplified into a single function for each: layoutcheck & clearing seal.
    • improved nodes, templates & pathing to obtain >95% seal success, independent of layout
    • added 3x cs_kill_trash calls before opening seals
    • added location to cs_kill_trash functions to ease future implementation of other classes
    • moved all pathing instructions from diablo.py to hammerdin.py (except for calibration at seals & clear trash)
    • added town_visit function to run maintenance when reaching pentagram

    pather.py

    • added a check for shrines if teleporting > 50 times, to avoid getting stuck (corresponding Bug reported in GitHub can be closed)

    i_char.py

    • replaced arguments for nodes with location in kill_* functions

    hammerdin.py

    • within cs_kill_trash added location to define specific attack sequences for each location
    • added seal_layout to sealboss functions in char.py
    • added pickit to hammerdin.py

    game.ini

    • lots of new diablo static paths
    • added ROI for shrine check

    config.py & params.ini

    • added new param cs_town_visits = 1 to buy pots & stash items between clearing seals, called whenever pentagram is visited.
    • added new param runs_per_stash to allow users to clear their inventory before running diablo. Standard setting for stashing by Aeon was 4.
    • ADDED SOME COMMENTS IN PARAMS.INI TO MINIMIZE QUESTIONS IN DISCORD.

    bot.py

    • added pickit to hammerdin constructor
    • added belt manager to diablo constructor
    • changed standard botty menu table style to rounded :)

    utils/diablo_log_parser.py

    • added tool to parse info.log for identifying reasons for failed runs & overfall script efficiency.
    opened by jobithu 12
  • Hammerdin dont use hammer

    Hammerdin dont use hammer

    Hello,

    All work pretty good but just one thing my hammer use teleport/aura but dont do hammer... the spell is bind in ''Z" but my character in pindel teleport in and run in the corner...and my merc do the job. I dont know why sometimes he do hammer or sometimes nothing and wait...:D

    Anyone can help me ? Thank's

    Sorry for this little english i'm french btw.

    opened by Skuz76 11
  • Walking Hammerdin bugfix

    Walking Hammerdin bugfix

    The Hammerdin often accidentally clicked on monsters while walking to the end location. He did so while having Vigor active (because the bot thinks he's still walking). The existing fix to activate Concentration early did not work. Now it does. You might have noticed many complaints about it in Discord.

    If you want to test: Do Eldritch or Trav 10x without the fix as a Hammerdin without any form of teleport. You will notice him casting hammers with Vigor active at the beginning. With my fix that doesn't happen anymore.

    Eld, Shenk, Trav, Pindle fixed. The others not, because they're impossible without teleport anyway.

    opened by drallcom3 10
  • bugfix/anya_claws_best_match

    bugfix/anya_claws_best_match

    Extended the functionality of TemplateFinder.search / TemplateFinder.search_and_wait by replacing the boolean best_find with a search_type param that can be one of 3 value: ALL_MATCH (This ones fixes the Anya shopper not looking through all the claws bug), BEST_MATCH and FIRST_MATCH (this is the default just like before).

    For BEST_MATCH and FIRST_MATCH the function returns a TemplateMatch just like before and for ALL_MATCH it now returns a list[TemplateMatch].

    All calls with best_match True were replaced with search_type=SearchType.Best match. All calls with best_match False had the param removed since FIRST_MATCH was the default anyway.

    The Anya / Drognan shopper calls were replaced with ALL_MATCH to get all the claws / scepters.

    Updated gitignore to include the IntelliJ generated files.

    work in progress 
    opened by alex-c-i 10
  • Crash on exit

    Crash on exit

    After synching with lastest code, I am getting the following errors while char exits:

    [2022-02-22 17:23:39,403] INFO Run Shenk Exception in thread Thread-7: Traceback (most recent call last): File "C:\Users<usr>\Miniconda3\envs\botty\lib\threading.py", line 973, in _bootstrap_inner self.run() File "C:\Users<usr>\Miniconda3\envs\botty\lib\threading.py", line 910, in run self._target(*self._args, **self._kwargs) File "C:\Users<usr>\d2r\botty\src\bot.py", line 153, in start self.trigger_or_stop('init') File "C:\Users<usr>\d2r\botty\src\bot.py", line 173, in trigger_or_stop self.trigger(name, **kwargs) File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 899, in _get_trigger return event.trigger(model, *args, **kwargs) File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 401, in trigger return self.machine._process(func) File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 1201, in _process self._transition_queue0 File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 426, in _trigger return self._process(event_data) File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 435, in _process if trans.execute(event_data): File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 272, in execute event_data.machine.callbacks(itertools.chain(event_data.machine.before_state_change, self.before), event_data) File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 1123, in callbacks self.callback(func, event_data) File "C:\Users<usr>\Miniconda3\envs\botty\lib\site-packages\transitions\core.py", line 1144, in callback func(*event_data.args, **event_data.kwargs) File "C:\Users<usr>\d2r\botty\src\bot.py", line 366, in on_end_game view.save_and_exit() File "C:\Users<usr>\d2r\botty\src\ui_components\view.py", line 63, in save_and_exit if click_save_exit(exit_button): File "C:\Users<usr>\d2r\botty\src\ui_components\view.py", line 47, in click_save_exit select_screen_object_match(match, delay_factor=(0.1, 0.3)) File "C:\Users<usr>\d2r\botty\src\ui\ui_manager.py", line 202, in select_screen_object_match mouse.move(*convert_screen_to_monitor(match.center), delay_factor=delay_factor) File "C:\Users<usr>\d3r\botty\src\screen.py", line 25, in convert_screen_to_monitor x = screen_coord[0] + monitor_roi["left"] TypeError: 'NoneType' object is not subscriptable

    opened by offerduo 10
  • Hard quitout on full stash leads to rollbacks in single player

    Hard quitout on full stash leads to rollbacks in single player

    A full stash error leads to terminating the D2R task. In single player, saves are infrequent and a soft quitout is needed to avoid lost progress.

    I experienced the following scenario: Botty finds nice loot, Botty goes to put loot in stash, stash is full, Botty kills D2R, loot is gone forever. Intended behavior is, I suspect, to keep the loot in inventory.

    Waiting to Confirm Issue 
    opened by andrewdudzik 0
  • Enhancement: Added support for async mouse moves

    Enhancement: Added support for async mouse moves

    You can do mouse move in background with is_async=True in mouse.move.

    mouse.sync waits until the mouse reaches target. mouse.stop stops the background move immediately or does nothing if the mouse is not moving. A new mouse.move stops mouse move in background first and goes to the new target

    May cause issues if multiple threads are calling mouse.move (e.g. chicken).

    ready for review 
    opened by roozhou 0
Releases(v0.8.1)
  • v0.8.1(Jun 21, 2022)

    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: https://github.com/bottytools/botty/compare/v0.8.0...v0.8.1

    Source code(tar.gz)
    Source code(zip)
    botty_v0.8.1.tar.gz(660.43 MB)
  • v0.8.0(Jun 17, 2022)

    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 https://github.com/aeon0/botty/pull/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: https://github.com/aeon0/botty/compare/v0.7.4...v0.8.0

    Source code(tar.gz)
    Source code(zip)
    botty_v0.8.0.tar.gz(660.43 MB)
  • v0.7.4(Jun 14, 2022)

    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

    • @SdxHex made their first contribution in https://github.com/aeon0/botty/pull/737
    • @slapchop58 made their first contribution in https://github.com/aeon0/botty/pull/727
    • @drallcom3 made their first contribution in https://github.com/aeon0/botty/pull/743
    • @badbrad2889 made their first contribution in https://github.com/aeon0/botty/pull/736
    • @xw220 made their first contribution in https://github.com/aeon0/botty/pull/836
    • @NeoIsrafil made their first contribution in https://github.com/aeon0/botty/pull/851

    Full Changelog: https://github.com/aeon0/botty/compare/v0.7.3...v0.7.4

    Source code(tar.gz)
    Source code(zip)
    botty_v0.7.4.tar.gz(683.18 MB)
  • v0.7.3(Apr 21, 2022)

    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 https://github.com/aeon0/botty/pull/597
    • Config variables by @Aimware0 in https://github.com/aeon0/botty/pull/651
    • Leveraging OCR to read exp and track in game_stats by @egut125 in https://github.com/aeon0/botty/pull/662
    • Runtime breaktime tracking by @egut125 in https://github.com/aeon0/botty/pull/665
    • Feature/enhancement: Support for D2R launch options and cosmetic mods by @mgleed in https://github.com/aeon0/botty/pull/677

    Enhancements

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

    Bugfixes

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

    New Contributors

    • @roozhou made their first contribution in https://github.com/aeon0/botty/pull/661
    • @tomoyo233 made their first contribution in https://github.com/aeon0/botty/pull/688

    Full Changelog: https://github.com/aeon0/botty/compare/v0.7.2...v0.7.3

    Source code(tar.gz)
    Source code(zip)
    botty_v.0.7.3.rar(209.45 MB)
  • v0.7.2(Mar 20, 2022)

    New features:

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

    Bug fixes:

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

    Etc.

    • Note for num loot by @D2RLegit in https://github.com/aeon0/botty/pull/637
    • added error handling for custom.ini when missing section header by @Aimware0 in https://github.com/aeon0/botty/pull/647
    • Remove: Codecov by @aeon0 in https://github.com/aeon0/botty/pull/632

    New Contributors

    • @Aimware0 made their first contribution in https://github.com/aeon0/botty/pull/647

    Full Changelog: https://github.com/aeon0/botty/compare/v0.7.1...v0.7.2

    Source code(tar.gz)
    Source code(zip)
    botty_v.0.7.2.rar(201.37 MB)
  • v0.7.1(Mar 10, 2022)

    What's Changed

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

    Full Changelog: https://github.com/aeon0/botty/compare/v0.7.0...v0.7.1

    Source code(tar.gz)
    Source code(zip)
    botty_v.0.7.1.rar(201.36 MB)
  • v0.7.0(Mar 6, 2022)

    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 https://github.com/aeon0/botty/pull/552 -@Kellen-Stuart made their first contribution in https://github.com/aeon0/botty/pull/595

    Source code(tar.gz)
    Source code(zip)
    botty_v.0.7.0.rar(201.37 MB)
  • v0.6.7(Feb 15, 2022)

    What's Changed

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

    Full Changelog: https://github.com/aeon0/botty/compare/v0.6.6...v0.6.7

    Source code(tar.gz)
    Source code(zip)
    botty_v.0.6.7.rar(185.19 MB)
  • v0.6.6(Feb 15, 2022)

    What's Changed

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

    New Contributors

    • @Ezro made their first contribution in https://github.com/aeon0/botty/pull/534

    Full Changelog: https://github.com/aeon0/botty/compare/v0.6.5...v0.6.6

    Source code(tar.gz)
    Source code(zip)
    botty_v.0.6.6.rar(185.19 MB)
  • v0.6.5(Feb 12, 2022)

    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

    • @VladimirMakaev made their first contribution in https://github.com/aeon0/botty/pull/453
    • @pokzcodes made their first contribution in https://github.com/aeon0/botty/pull/472
    • @flapjax made their first contribution in https://github.com/aeon0/botty/pull/458
    • @AlekseyLesnoy made their first contribution in https://github.com/aeon0/botty/pull/483
    • @RB-Development made their first contribution in https://github.com/aeon0/botty/pull/383
    • @thebrettd made their first contribution in https://github.com/aeon0/botty/pull/522
    • @Steve6030 made their first contribution in https://github.com/aeon0/botty/pull/523

    Full Changelog: https://github.com/aeon0/botty/compare/v0.6.3...v0.6.5

    Source code(tar.gz)
    Source code(zip)
    botty_v.0.6.5.rar(183.80 MB)
  • v0.6.4(Jan 15, 2022)

  • v0.6.3(Jan 14, 2022)

    What's Changed

    • Fix template search memory allocation issue by @aeon0 in https://github.com/aeon0/botty/pull/413
    • Light Sorc Trav/shenk Update by @D2RLegit in https://github.com/aeon0/botty/pull/404
    • Catch all config errors by @aeon0 in https://github.com/aeon0/botty/pull/414
    • Add check to create info_screenshots folder and try-catch adding imagโ€ฆ by @egut125 in https://github.com/aeon0/botty/pull/416
    • Add bot name to generic messages by @egut125 in https://github.com/aeon0/botty/pull/422
    • Messaging update by @skizotenigma in https://github.com/aeon0/botty/pull/408
    • Configure war cry cast frequency by @aeon0 in https://github.com/aeon0/botty/pull/424
    • Revert "Messaging update" by @aeon0 in https://github.com/aeon0/botty/pull/425
    • Fix hork for windowed by @aeon0 in https://github.com/aeon0/botty/pull/426
    • Bug fix round by @aeon0 in https://github.com/aeon0/botty/pull/431
    • Startup speedup by @aeon0 in https://github.com/aeon0/botty/pull/432
    • Thread-safe TempalteFinder by @aeon0 in https://github.com/aeon0/botty/pull/434
    • Pathing A1 after Town Portal by @aeon0 in https://github.com/aeon0/botty/pull/433
    • D2r restart optional by @FrancescoZini in https://github.com/aeon0/botty/pull/417
    • Fix testing by @aeon0 in https://github.com/aeon0/botty/pull/437
    • Check stashing after failed runs or chicken/death by @aeon0 in https://github.com/aeon0/botty/pull/438
    • Merge Diablo by @jobithu in https://github.com/aeon0/botty/pull/435
    • D2r on top on restart by @FrancescoZini in https://github.com/aeon0/botty/pull/442
    • No diablo by default by @FrancescoZini in https://github.com/aeon0/botty/pull/441
    • Nova sorc trav update by @aeon0 in https://github.com/aeon0/botty/pull/443
    • Dia&cs by @jobithu in https://github.com/aeon0/botty/pull/444
    • Blizz sorc Nihlathak script by @D2RLegit in https://github.com/aeon0/botty/pull/447
    • Sort pather nodes by @aeon0 in https://github.com/aeon0/botty/pull/449
    • Bump version to v0.6.3 by @aeon0 in https://github.com/aeon0/botty/pull/450

    Full Changelog: https://github.com/aeon0/botty/compare/v0.6.2...v0.6.3

    Source code(tar.gz)
    Source code(zip)
    botty_v0.6.3.rar(161.54 MB)
  • v0.6.2(Jan 8, 2022)

    What's Changed

    • Repair Each Run by @skizotenigma in https://github.com/aeon0/botty/pull/338
    • Add Tests and Coverage report by @aeon0 in https://github.com/aeon0/botty/pull/341
    • Add ItemFinder unittests by @aeon0 in https://github.com/aeon0/botty/pull/342
    • Update Blizz Sorc (@D2RLegit) by @aeon0 in https://github.com/aeon0/botty/pull/343
    • Barb improvements by @aeon0 in https://github.com/aeon0/botty/pull/344
    • Warn against using botty online by @thordin9 in https://github.com/aeon0/botty/pull/334
    • CTA check to make sure you can BO/BC by @skizotenigma in https://github.com/aeon0/botty/pull/347
    • Identify Items by @skizotenigma in https://github.com/aeon0/botty/pull/339
    • Nova Sorc by @aeon0 in https://github.com/aeon0/botty/pull/350
    • Fix for blizz_sorc master by @D2RLegit in https://github.com/aeon0/botty/pull/351
    • fix for IDing by @skizotenigma in https://github.com/aeon0/botty/pull/353
    • Backup and Restore settings by @FrancescoZini in https://github.com/aeon0/botty/pull/349
    • Bug Fix: F11 pressed repeatedly might crash the main loop by @FrancescoZini in https://github.com/aeon0/botty/pull/359
    • Create run.bat by @JohnStyleZ in https://github.com/aeon0/botty/pull/360
    • A2 Pathing + Arcane run + Static for Sorc + Static Tele robustification + Chest class by @aeon0 in https://github.com/aeon0/botty/pull/348
    • Identify in Act 3 by @skizotenigma in https://github.com/aeon0/botty/pull/362
    • Warn user about D2r settings not being as required by @aeon0 in https://github.com/aeon0/botty/pull/363
    • Optimize nova sorc for trav by @aeon0 in https://github.com/aeon0/botty/pull/364
    • Fix attacks on summoner for sorc by @aeon0 in https://github.com/aeon0/botty/pull/366
    • Dont use telekinesis on pindle red portal by @aeon0 in https://github.com/aeon0/botty/pull/367
    • Fix for crash on A2 Summoner for Sorceress by @hectorgimenez in https://github.com/aeon0/botty/pull/365
    • Take screen as param in Chest Class by @aeon0 in https://github.com/aeon0/botty/pull/368
    • Updating Beautiful Table Styling by @egut125 in https://github.com/aeon0/botty/pull/371
    • Catch pickit config errors and reduce to print by @aeon0 in https://github.com/aeon0/botty/pull/372
    • Allow bo and bc for weapon switch by @aeon0 in https://github.com/aeon0/botty/pull/373
    • only log item on keep of item by @egut125 in https://github.com/aeon0/botty/pull/356
    • update run.bat by @JohnStyleZ in https://github.com/aeon0/botty/pull/377
    • Act 4 - Full usage by @skizotenigma in https://github.com/aeon0/botty/pull/369
    • Pre-Buff before each arm - if do_pre_buff is enabled. by @bjoerm in https://github.com/aeon0/botty/pull/378
    • set D2R window to be always on top by @FrancescoZini in https://github.com/aeon0/botty/pull/382
    • Act 1 town full usage by @skizotenigma in https://github.com/aeon0/botty/pull/381
    • Feature: Allow Classic players to shop hammerdin scepters from Drognan by @fiseman in https://github.com/aeon0/botty/pull/379
    • 1 liner bug fix for game_recovery: name 'config' is not defined by @FrancescoZini in https://github.com/aeon0/botty/pull/385
    • Fixed sorc 301 pathing. by @D2RLegit in https://github.com/aeon0/botty/pull/384
    • Clean unused templates by @aeon0 in https://github.com/aeon0/botty/pull/387
    • some atk sequence updates by @aeon0 in https://github.com/aeon0/botty/pull/388
    • Restart game by @Master-Matt in https://github.com/aeon0/botty/pull/374
    • Npc serach optimization by @aeon0 in https://github.com/aeon0/botty/pull/391
    • pywin32 dependency fix by @FrancescoZini in https://github.com/aeon0/botty/pull/394
    • Jamella pathing fix. by @skizotenigma in https://github.com/aeon0/botty/pull/393
    • utilize per-NPC ROI's and pose positions by @mgleed in https://github.com/aeon0/botty/pull/395
    • Test utils misc load_template() by @aeon0 in https://github.com/aeon0/botty/pull/396
    • Adding Lysander in A2 by @skizotenigma in https://github.com/aeon0/botty/pull/399
    • "Basic" classes by @skizotenigma in https://github.com/aeon0/botty/pull/352
    • Improved debugger by @FrancescoZini in https://github.com/aeon0/botty/pull/361
    • correcting a4 pathing issue by @skizotenigma in https://github.com/aeon0/botty/pull/398
    • Necro class by @nlapinski in https://github.com/aeon0/botty/pull/337
    • Breaking Messenger Module into something more flexible for specifโ€ฆ by @egut125 in https://github.com/aeon0/botty/pull/370
    • Buy greater potions in nightmare by @bjoerm in https://github.com/aeon0/botty/pull/401
    • Additional item properties assets by @alceasan in https://github.com/aeon0/botty/pull/402
    • Add message_api_type to readme by @egut125 in https://github.com/aeon0/botty/pull/406
    • Char selector after restart by @aeon0 in https://github.com/aeon0/botty/pull/403
    • Update light sorc shenk by @aeon0 in https://github.com/aeon0/botty/pull/407
    • Fix multi logging of stash item in caser of full stash tab by @aeon0 in https://github.com/aeon0/botty/pull/409
    • Add some items and filters (rare matriarchal jav, +3 tornado pels, +3 warcry helmets) by @D2RLegit in https://github.com/aeon0/botty/pull/386
    • Fix bug in standalone health manager by @aeon0 in https://github.com/aeon0/botty/pull/410
    • Trav additional templates by @aeon0 in https://github.com/aeon0/botty/pull/411
    • Bump version to v0.6.2 by @aeon0 in https://github.com/aeon0/botty/pull/412

    New Contributors

    • @skizotenigma made their first contribution in https://github.com/aeon0/botty/pull/338
    • @thordin9 made their first contribution in https://github.com/aeon0/botty/pull/334
    • @FrancescoZini made their first contribution in https://github.com/aeon0/botty/pull/349
    • @JohnStyleZ made their first contribution in https://github.com/aeon0/botty/pull/360
    • @hectorgimenez made their first contribution in https://github.com/aeon0/botty/pull/365
    • @fiseman made their first contribution in https://github.com/aeon0/botty/pull/379
    • @nlapinski made their first contribution in https://github.com/aeon0/botty/pull/337
    • @alceasan made their first contribution in https://github.com/aeon0/botty/pull/402

    Full Changelog: https://github.com/aeon0/botty/compare/v0.6.1...v0.6.2

    Source code(tar.gz)
    Source code(zip)
    botty_v0.6.2.rar(186.68 MB)
  • v0.6.1(Dec 25, 2021)

    What's Changed

    • fix gold issue causing pickit_type error by @mgleed in https://github.com/aeon0/botty/pull/329
    • Dont click on merc icon and force_move in a3 town by @aeon0 in https://github.com/aeon0/botty/pull/331
    • New release v0.6.1 by @aeon0 in https://github.com/aeon0/botty/pull/332

    Full Changelog: https://github.com/aeon0/botty/compare/v0.6.0...v0.6.1

    Source code(tar.gz)
    Source code(zip)
    botty_v0.6.1.rar(174.43 MB)
  • v0.6.0(Dec 24, 2021)

    What's Changed

    • Fix static field param by @aeon0 in https://github.com/aeon0/botty/pull/296
    • adding more uniq items by @yhkinsar in https://github.com/aeon0/botty/pull/299
    • Adding location_stats dict to hold stats for each run by @egut125 in https://github.com/aeon0/botty/pull/297
    • Eldritch pathing robustness by @aeon0 in https://github.com/aeon0/botty/pull/302
    • Correctly Total Failed Runs, Only Set location to shenk when battlingโ€ฆ by @egut125 in https://github.com/aeon0/botty/pull/303
    • Nihlathak run changed to use the correct path if the template 'NI2_A_SAFE_DIST_2' was detected by @stephan-01010011 in https://github.com/aeon0/botty/pull/304
    • Config discord condensed by @egut125 in https://github.com/aeon0/botty/pull/310
    • tome bug workaround by @kozfelipe in https://github.com/aeon0/botty/pull/311
    • Nihlatak test by @aeon0 in https://github.com/aeon0/botty/pull/312
    • Add require/exclude properties to pickit.ini when stashing items. Also more item templates. by @mgleed in https://github.com/aeon0/botty/pull/295
    • Configurable ordering of runs by @aeon0 in https://github.com/aeon0/botty/pull/314
    • Fix pickup potion update by @aeon0 in https://github.com/aeon0/botty/pull/315
    • Save stats to new file by @aeon0 in https://github.com/aeon0/botty/pull/316
    • include mangsong to pickit by @kozfelipe in https://github.com/aeon0/botty/pull/317
    • If in doubt, just use path a by @aeon0 in https://github.com/aeon0/botty/pull/318
    • Cold-sorc-trav-eld-shenk by @D2RLegit in https://github.com/aeon0/botty/pull/300
    • Buy potions from vendor by @aeon0 in https://github.com/aeon0/botty/pull/320
    • Blizz sorc updates by @D2RLegit in https://github.com/aeon0/botty/pull/321
    • Light sorc overhaul by @aeon0 in https://github.com/aeon0/botty/pull/323
    • Blizz Sorc adjustments by @aeon0 in https://github.com/aeon0/botty/pull/324
    • Trapsin updates by @aeon0 in https://github.com/aeon0/botty/pull/325
    • Random move if stairs not found by @aeon0 in https://github.com/aeon0/botty/pull/326
    • Retry town portal creation on fail by @aeon0 in https://github.com/aeon0/botty/pull/327
    • New release v0.6.0 by @aeon0 in https://github.com/aeon0/botty/pull/328

    New Contributors

    • @stephan-01010011 made their first contribution in https://github.com/aeon0/botty/pull/304
    • @kozfelipe made their first contribution in https://github.com/aeon0/botty/pull/311
    • @D2RLegit made their first contribution in https://github.com/aeon0/botty/pull/300

    Full Changelog: https://github.com/aeon0/botty/compare/v0.5.1...v0.6.0

    Source code(tar.gz)
    Source code(zip)
    botty_v0.6.0.rar(174.43 MB)
  • v0.5.1(Dec 15, 2021)

    What's Changed

    • Bump version to v0.5.0 by @aeon0 in https://github.com/aeon0/botty/pull/278
    • Fix gold stashing bug by @aeon0 in https://github.com/aeon0/botty/pull/280
    • Implement Nihlatak for Sorc by @aeon0 in https://github.com/aeon0/botty/pull/281
    • Tele dancing sorc nil by @aeon0 in https://github.com/aeon0/botty/pull/282
    • Trav for Sorc by @aeon0 in https://github.com/aeon0/botty/pull/284
    • Use static for sorc at trav by @aeon0 in https://github.com/aeon0/botty/pull/285
    • Add location from the Run procedure by @egut125 in https://github.com/aeon0/botty/pull/283
    • Add-Mercenary-deaths-counter by @EthanJian in https://github.com/aeon0/botty/pull/287
    • Support Greater Potion by @yhkinsar in https://github.com/aeon0/botty/pull/290
    • Barbarian support (currently War Cry/singer only) with Horking by @tw1st40 in https://github.com/aeon0/botty/pull/288
    • Fix trav gold pick up only after latest changes + clean ups by @aeon0 in https://github.com/aeon0/botty/pull/292
    • Adjust template for nil on A by @aeon0 in https://github.com/aeon0/botty/pull/293
    • Bump version to v0.5.1 by @aeon0 in https://github.com/aeon0/botty/pull/294

    New Contributors

    • @EthanJian made their first contribution in https://github.com/aeon0/botty/pull/287
    • @yhkinsar made their first contribution in https://github.com/aeon0/botty/pull/290
    • @tw1st40 made their first contribution in https://github.com/aeon0/botty/pull/288

    Full Changelog: https://github.com/aeon0/botty/compare/v0.5.0...v0.5.1

    Source code(tar.gz)
    Source code(zip)
    botty_v0.5.1.rar(172.43 MB)
  • v0.5.0(Dec 12, 2021)

    What's Changed

    • Revert Merc template by @aeon0 in https://github.com/aeon0/botty/pull/206
    • feat: adding magic amulet to pickable item list by @dougouk in https://github.com/aeon0/botty/pull/207
    • No item pickup by @Master-Matt in https://github.com/aeon0/botty/pull/205
    • adjust template_finder.py test templates for debugging by @mgleed in https://github.com/aeon0/botty/pull/208
    • Disable quick cast in default settings until officially supported by @mgleed in https://github.com/aeon0/botty/pull/209
    • Create template masks in init() by @mgleed in https://github.com/aeon0/botty/pull/212
    • A4 Town Pathing by @aeon0 in https://github.com/aeon0/botty/pull/215
    • Use merc config by @aeon0 in https://github.com/aeon0/botty/pull/216
    • Add Npc: Tyrael by @aeon0 in https://github.com/aeon0/botty/pull/217
    • Add Npc: Ormus by @aeon0 in https://github.com/aeon0/botty/pull/218
    • Connect all towns by @aeon0 in https://github.com/aeon0/botty/pull/220
    • Integrate Trav Run by @aeon0 in https://github.com/aeon0/botty/pull/221
    • Refactor runs by @aeon0 in https://github.com/aeon0/botty/pull/222
    • Rename run.py to main.py by @aeon0 in https://github.com/aeon0/botty/pull/223
    • Go to A5 Larzuk for repairing from other acts by @aeon0 in https://github.com/aeon0/botty/pull/224
    • Fix item pickup behind obstacles by @aeon0 in https://github.com/aeon0/botty/pull/225
    • Speed up template pathing by @aeon0 in https://github.com/aeon0/botty/pull/226
    • Fix health manager pause by @aeon0 in https://github.com/aeon0/botty/pull/227
    • Fix select template timeout bug by @aeon0 in https://github.com/aeon0/botty/pull/230
    • fix game start in act 4 (adj start tempates) by @bobcho in https://github.com/aeon0/botty/pull/231
    • Fix/robustify a4 start by @aeon0 in https://github.com/aeon0/botty/pull/232
    • Check if repairing is needed by @aeon0 in https://github.com/aeon0/botty/pull/233
    • Log failed games :roll_eyes: by @aeon0 in https://github.com/aeon0/botty/pull/234
    • Improve trav pathing by @aeon0 in https://github.com/aeon0/botty/pull/235
    • Walking Trav by @aeon0 in https://github.com/aeon0/botty/pull/236
    • Fix tele rebuy after failed tele by @aeon0 in https://github.com/aeon0/botty/pull/237
    • Add area to items found by @aeon0 in https://github.com/aeon0/botty/pull/239
    • Move cursor on pickit by @aeon0 in https://github.com/aeon0/botty/pull/240
    • When your bot doesnt pick up the best item in the game :flushed: by @aeon0 in https://github.com/aeon0/botty/pull/241
    • Dont spam debug messages by @aeon0 in https://github.com/aeon0/botty/pull/242
    • Add pathing a4 start to tyrael by @aeon0 in https://github.com/aeon0/botty/pull/243
    • Fix black game.ini by @mgleed in https://github.com/aeon0/botty/pull/238
    • Fix stashing issue by @aeon0 in https://github.com/aeon0/botty/pull/245
    • Move files by @aeon0 in https://github.com/aeon0/botty/pull/246
    • Fix trav error handling by @aeon0 in https://github.com/aeon0/botty/pull/248
    • Fix difficulty roi by @mgleed in https://github.com/aeon0/botty/pull/249
    • Improved clustering & cropping of Items by @aeon0 in https://github.com/aeon0/botty/pull/247
    • Separate gold and item stashing by @Master-Matt in https://github.com/aeon0/botty/pull/250
    • Fix config error by @aeon0 in https://github.com/aeon0/botty/pull/251
    • Add offset node func by @aeon0 in https://github.com/aeon0/botty/pull/252
    • Smooth out shenk pathing start by @aeon0 in https://github.com/aeon0/botty/pull/253
    • Esc out of cain focus by @aeon0 in https://github.com/aeon0/botty/pull/254
    • Fix tuple assignment issue by @aeon0 in https://github.com/aeon0/botty/pull/255
    • Clean up imports & move files by @aeon0 in https://github.com/aeon0/botty/pull/256
    • Only use stash tab and wp tab if needed by @aeon0 in https://github.com/aeon0/botty/pull/259
    • Set misc_gold=0 in case stash is full of gold by @aeon0 in https://github.com/aeon0/botty/pull/260
    • Split params and seperate .exe for shop and health manager by @aeon0 in https://github.com/aeon0/botty/pull/261
    • Params for shop by @aeon0 in https://github.com/aeon0/botty/pull/262
    • Detect hit recovery on static teleport by @aeon0 in https://github.com/aeon0/botty/pull/263
    • Update .gitignore by @mgleed in https://github.com/aeon0/botty/pull/266
    • Use message template to support other hooks by @nekolr in https://github.com/aeon0/botty/pull/265
    • Support all mercs by @mgleed in https://github.com/aeon0/botty/pull/267
    • Allow item = 3 in pickit to make ethereal required to stash by @mgleed in https://github.com/aeon0/botty/pull/268
    • Code improve for eth only filter by @aeon0 in https://github.com/aeon0/botty/pull/269
    • Nihlatak by @jobithu in https://github.com/aeon0/botty/pull/244
    • dclone ip hunting by @cutebeast in https://github.com/aeon0/botty/pull/270
    • Static path trav and some renaming by @aeon0 in https://github.com/aeon0/botty/pull/271
    • Fix turning off gold pickup once stash is full by @aeon0 in https://github.com/aeon0/botty/pull/272
    • Support for trapsin build by @aeon0 in https://github.com/aeon0/botty/pull/273
    • Rename region of interest by @aeon0 in https://github.com/aeon0/botty/pull/275
    • Config to force prebuff every run by @aeon0 in https://github.com/aeon0/botty/pull/274
    • Fix shopper build by @aeon0 in https://github.com/aeon0/botty/pull/276
    • Fix stashing by @aeon0 in https://github.com/aeon0/botty/pull/277

    New Contributors

    • @dougouk made their first contribution in https://github.com/aeon0/botty/pull/207
    • @bobcho made their first contribution in https://github.com/aeon0/botty/pull/231
    • @nekolr made their first contribution in https://github.com/aeon0/botty/pull/265
    • @jobithu made their first contribution in https://github.com/aeon0/botty/pull/244
    • @cutebeast made their first contribution in https://github.com/aeon0/botty/pull/270

    Full Changelog: https://github.com/aeon0/botty/compare/v0.4.4...v0.5.0

    Source code(tar.gz)
    Source code(zip)
    botty_v0.5.0.rar(172.39 MB)
  • v0.4.4(Dec 4, 2021)

    Overview

    • Fix game recovery issue that would prevent botty from restarting in some cases
    • Fix issue where npc button is not found if highlighted
    • Fix max game length being triggered when manually pausing (will now also pause game timer)
    • Added param for saved_game_folder so you don't have to specify each time you run Auto Settings
    • Added param to specify if and in which intervals the status report is sent
    • Fix unwanted delay before executing chicken
    • Fix issue for failed template interaction (e.g. waypoint or stash) in case it took too long to move to template. Will now retry till success.
    • Checking if tome of tps is empty at start of game. If you run just pindle and don't want to carry a tome, leave the "tp" hotkey empty in the params
    • Fix discard issue. Sometimes good items were discarded because the item details that show on hover took longer to display than grabbing the screenshot.

    What's Changed

    • remove resolution conditional statement from gloves shopper by @mgleed in https://github.com/aeon0/botty/pull/172
    • simplify some code based on recent search update by @mgleed in https://github.com/aeon0/botty/pull/171
    • Revert npc multi tempalte search by @aeon0 in https://github.com/aeon0/botty/pull/174
    • Fix NPC highlighted action btn by @aeon0 in https://github.com/aeon0/botty/pull/175
    • Fix gamerecovery creating 2 bot instances by @aeon0 in https://github.com/aeon0/botty/pull/177
    • Template finder auto load based on filenames by @aeon0 in https://github.com/aeon0/botty/pull/178
    • Add in logic when botty is paused and not trigger max game length by @egut125 in https://github.com/aeon0/botty/pull/167
    • Add Pathing for A3 Town by @aeon0 in https://github.com/aeon0/botty/pull/180
    • Add Pathing for Trav by @aeon0 in https://github.com/aeon0/botty/pull/181
    • Add saved_games_folder param by @cesarvargas00 in https://github.com/aeon0/botty/pull/179
    • Revert back to previous npc search by @aeon0 in https://github.com/aeon0/botty/pull/185
    • Added new param discord_status_count by @egut125 in https://github.com/aeon0/botty/pull/183
    • Template alpha channel by @mgleed in https://github.com/aeon0/botty/pull/170
    • Prepare for shop release by @aeon0 in https://github.com/aeon0/botty/pull/189
    • Fix creash on death and chicken delay by @aeon0 in https://github.com/aeon0/botty/pull/190
    • skip gold stashing when there's no gold in inventory by @navy91 in https://github.com/aeon0/botty/pull/182
    • game breaking sun spirit fix by @ggodev in https://github.com/aeon0/botty/pull/192
    • adjusted threshold by @navy91 in https://github.com/aeon0/botty/pull/191
    • Fix template selection to wait for success by @aeon0 in https://github.com/aeon0/botty/pull/195
    • Check for available tps on start of run by @aeon0 in https://github.com/aeon0/botty/pull/196
    • Revert Anya templates by @aeon0 in https://github.com/aeon0/botty/pull/199
    • Use masked skill assets by @aeon0 in https://github.com/aeon0/botty/pull/201
    • Fix discard issue by adding a wait time by @aeon0 in https://github.com/aeon0/botty/pull/202
    • Revert npc assets by @aeon0 in https://github.com/aeon0/botty/pull/203

    New Contributors

    • @egut125 made their first contribution in https://github.com/aeon0/botty/pull/167
    • @cesarvargas00 made their first contribution in https://github.com/aeon0/botty/pull/179
    • @navy91 made their first contribution in https://github.com/aeon0/botty/pull/182

    Full Changelog: https://github.com/aeon0/botty/compare/v0.4.3...v0.4.4

    Source code(tar.gz)
    Source code(zip)
    botty_v0.4.4.rar(60.39 MB)
  • v0.4.3(Dec 1, 2021)

    What's Changed

    • Lord have mercy on me :pray: by @aeon0 in https://github.com/aeon0/botty/pull/130
    • Make it possible to initialize Screen ingame by @reqyl in https://github.com/aeon0/botty/pull/132
    • Fix javashop monitor by @jrzheng in https://github.com/aeon0/botty/pull/135
    • 720 assets by @jagarop in https://github.com/aeon0/botty/pull/133
    • autodownload nuitka dependencies for compile by @mgleed in https://github.com/aeon0/botty/pull/134
    • Support Hammerdin without Engima by @aeon0 in https://github.com/aeon0/botty/pull/136
    • Check corpse after game recovery by @aeon0 in https://github.com/aeon0/botty/pull/137
    • Check if stashing is needed on start after x runs without stashing by @aeon0 in https://github.com/aeon0/botty/pull/138
    • Why nobody told me about /nopickup until now!??! by @aeon0 in https://github.com/aeon0/botty/pull/141
    • Update pot count on use by @mgleed in https://github.com/aeon0/botty/pull/143
    • blacklisted superior flameberge, as it gets recognized for superior flail by @ggodev in https://github.com/aeon0/botty/pull/146
    • Update potion needs after drinking which allows accurate potion pickups after fights. by @jrzheng in https://github.com/aeon0/botty/pull/145
    • Revert incorrect pot increment by @reqyl in https://github.com/aeon0/botty/pull/151
    • Fix getting stuck at discarding by @aeon0 in https://github.com/aeon0/botty/pull/152
    • removed 1920_1080 support, I think.... by @Master-Matt in https://github.com/aeon0/botty/pull/149
    • Docs and auto setting for removed res by @aeon0 in https://github.com/aeon0/botty/pull/153
    • support list input for template_finder.search() by @mgleed in https://github.com/aeon0/botty/pull/125
    • Tomb to tome by @mgleed in https://github.com/aeon0/botty/pull/154
    • Full Standalone Shopper Script for Anya IAS Gloves and Claws by @SwePow in https://github.com/aeon0/botty/pull/148
    • fix(sorc): hold mouse during attack delay by @dcolondev in https://github.com/aeon0/botty/pull/155
    • Fix rapid-fire rejuvs edge case by @mgleed in https://github.com/aeon0/botty/pull/156
    • cleanup difficulty roi's by @mgleed in https://github.com/aeon0/botty/pull/158
    • Run Health and Death Manager parallel to Bot by @aeon0 in https://github.com/aeon0/botty/pull/160
    • Update release process by @aeon0 in https://github.com/aeon0/botty/pull/161
    • Fix item pickup with telekinesis by @aeon0 in https://github.com/aeon0/botty/pull/163
    • Remove slow walk + adjust node positions by @aeon0 in https://github.com/aeon0/botty/pull/164
    • Remove useless mouse moves by @aeon0 in https://github.com/aeon0/botty/pull/165
    • Add blacklist items by @aeon0 in https://github.com/aeon0/botty/pull/166

    New Contributors

    • @jrzheng made their first contribution in https://github.com/aeon0/botty/pull/135
    • @Master-Matt made their first contribution in https://github.com/aeon0/botty/pull/149
    • @SwePow made their first contribution in https://github.com/aeon0/botty/pull/148
    • @dcolondev made their first contribution in https://github.com/aeon0/botty/pull/155

    Full Changelog: https://github.com/aeon0/botty/compare/v0.4.2...v0.4.3

    Source code(tar.gz)
    Source code(zip)
    botty_v0.4.3.rar(59.30 MB)
  • v0.4.2(Nov 27, 2021)

  • v0.4.1(Nov 26, 2021)

    4482e42 Auto offset on starting and auto res setting with f9 (#120) bc0aebf Actually use the failsave for red portal miss (#123) 25d1507 Change item pickup logic, increase performance (#122) 08a612c added normal gems (#117) 469b8d5 Fix game creation bug which somehow let's you create online games (#121) 9ca5acc Update uniq_weapon_death_web.png (#119) 6202a24 items overhaul for 1280_720, credits: Legit#4080 (#113) 173ea1f Lowres shop support (#114) 606e9a6 Telekinesis for item pickup

    Source code(tar.gz)
    Source code(zip)
    botty_v0.4.1.rar(88.05 MB)
  • v0.4.0(Nov 24, 2021)

    c4e1a3f Change some default settings (#105) d30105d Robustify cta switch (#97) cbacf67 Belt manager (#95) b7cff8f Disabled auto-pick for gold. Caused calculated item position to change. (#93) 6900969 Another color check after finding items (#92) 11f15cb Fix game recovery (#88) 3173ebc Add game stats to log file and discord (#85) 7b5b0b5 Check all items before stashing them (#84) 33b3542 Fix item find issues when there is fire in the img (#82) c092c60 Add additional debug options to color checker (#83) 3908cec run counter & logger messages (#81) c8ae7fa Fix eld fallback (#79) a639cd8 Added missing asset for magic monarch & added eth wire fleece (#70) 521ac33 Do not shut down D2R after getting stuck, just waiting in-game(#76) 37e0427 Fix redemption, no really optional (#72) fcd7a08 New shenk template (#73)

    Source code(tar.gz)
    Source code(zip)
    botty_v0.4.0.rar(87.30 MB)
  • v0.3.0(Nov 19, 2021)

    d35a21a Force blackmailed items to have higher score 9b571dc fix set amu asset issue (#60) 114548f Retry on red portal if missed (#59) 8ce3924 Detect no more tps and check weapon switch (#57) 283fdcb Add missing eldritch template (#56) 9ab74d8 fix color checker (#53) 4ff102b make it run a bit smoother (#50) d611e25 add advanced params section with pathing delay (#48) c700d43 Recover from being stuck (#46) 7102049 Fixes and fail saves (#44) 1eb20c2 fix runtime error pre buff (#43) 4f07e7a ๐Ÿ™‡โ€โ™‚๏ธ ๐Ÿ™ ๐Ÿ“ฟ (#40) b4fa554 actually stashing gold (wasnt implemented yet) (#28) c4dfe71 Support 1280x720 (#19) b940708 Javazon gg gloves shopper script (#24) 5665afc clip monitor coordinates (#37) 776c3b2 fix needing a tomb (#36) 1968c5b robustify death (#34) b102a30 add thunderstorm to sorc prebuff (#33) 168267b shut down d2r and bnet if botty gets stuck (#32) 74bdc46 botty folder not so cluttered (#18) 328126c implemented loot_screenshots (#17) eb0d729 Pickit/items 1280x720 (#26) e011f41 Setting up CI (#22) b0c5fc6 add anya as npc 2732e09 remove keys flag remove, doesnt work anyway c22f133 try again on save and exit 2069c1b support for different difficulties (#13) 1a70a70 energy_shield (#12) 23c5dc2 Add merc_chicken param and add highlighted variation of save&exit button (#11)

    Source code(tar.gz)
    Source code(zip)
    botty_v0.3.0.rar(82.04 MB)
  • v0.2.2(Nov 10, 2021)

  • v0.2.1(Nov 10, 2021)

    NOTE: There was some mixup with the discord integration spaming the channel. Had to filter some items. The hook in this release is removed. Please use v0.2.2!

    3ccbb06 adjust slow walk param 5c70550 discord integration for drops and getting stuck f48cdbd fix some pickit issues, lower item thresholds

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Nov 9, 2021)

    Changelog

    00e389a fix(template): Remove useless template 20d1f81 feat(template): Increase search scale 85b7d1b feat(pather): Bring back static routs as option 6821106 fix(char): Increase cast delay to be on the safe side 1733845 parma(colors): A bit wider ranges for colors 43edb7a fix(ui): Change save exit btn to be highlight independet 4eb56b4 fix(death): Give death manager time to pick up on possible death after chicken deea806 refactor(pickit): Lower case item names for backwards compatibility fdfae41 feat(bot): Go shopping! a512bfa feat(pather): Lazurak pathing 8b0ee50 feat(npc): Add larzuk as NPC 1c95247 feat(bot): Randomize order of runs 81c8eab feat(pickit): Expanded pickit items and defined new naming convention 111e166 fix(pather): Increase globe size to not click on it f935ac6 fix(chicken): Release alt before pressing esc 2a6701e fix(pickit): Force teleport when moving to items 2006d1b feat(mouse): Nicer mouse movement d9280f5 fix(stashing): add brief left click hold to avoid one type of d2r ctrl+click stashing bug 0ce91ff doc(char): Add attack sequence params to docs 0201fb2 fix(pindle): Add addtional template at start because of cta delay and merc standing in template a365d32 feat(atk): Config for attack length ad17c7c fix(pindle): Only move away from items if last run 3107e8c fix(cta): Switch order of cta and make quicker

    Source code(tar.gz)
    Source code(zip)
    botty_v0.2.0.rar(72.24 MB)
  • v0.1.3(Nov 7, 2021)

    3914892 fix(path): Add another template to avoid getting stuck at shenk 3d148dd feat(release): Create empty custom.ini for each release 90376dd fix(pickit): Workaround for pickup with flames, do shenk pickit twice 2f49776 fix(move): Do not slow walk on teleport 3622631 fix(hammerdin): Recast in set intervals to come back from interrupt 05917d0 fix(char): Remove useless import that might lead to issues in exe 6d2a934 feat(path): Ref pathing shenk 73449f2 feat(path): Refpathing to Eldritch 7d795f6 feat(path): Refpoint pathing for pindle f8b1787 fix(death): Make sure keys are released when killing main bot thread 7c8bd95 doc(dev): Add note about user being a variable 193dec4 fix(start): Robustify game start with new disabled play button

    Source code(tar.gz)
    Source code(zip)
    botty_v0.1.3.rar(71.51 MB)
  • v0.1.3-rc0(Nov 7, 2021)

    6d2a934 feat(path): Ref pathing shenk 73449f2 feat(path): Ref pathing to eldritch 7d795f6 feat(path): Ref pathing for pindle f8b1787 fix(death): Make sure keys are released when killing main thread 193dec4 fix(start): Robustify game start with new disabled play button fc0be24 feat(system): add zstandard to environment 10783ba fix(ui): Game creation

    Source code(tar.gz)
    Source code(zip)
    botty_v0.1.3-rc0.rar(70.57 MB)
  • v0.1.1(Nov 5, 2021)

    Changelog: 4cca84a revert(params): Revert to monitor 0 80fcdc0 feat(death): Fill up belt with pots from inventory after death b983e98 refactor(param): Change to default d2r hotkeys 3d89603 fix(death): Robustify death and chicken logic c337156 feat(run): Automatically set relevent settings in D2R e07c415 fix(tele): Possible sorc tele into pindle fix! 86b8f9d fix(pickit): Do not go to stash after picking up scrolls efb1073 fix(pindle): Change tp location at end of pindle, hopefully no more going to the halls 3039d87 feat(pindle): Fail save in case red portal was missed -> restart game 2d936e2 fix(end_run): Increase time_out to be back in twon 82cf839 fix(stash): Searching for wp menu to close in current frame eb2c8b5 fix(release): Make previous build folder deletition work c1936a7 doc(md): Add some dev docu a27bbac fix(HealthManager): Missing keyboard import

    Source code(tar.gz)
    Source code(zip)
    botty_v0.1.1.rar(53.71 MB)
Owner
null
null 2 Jul 19, 2022
Yolov5-opencv-cpp-python - Example of using ultralytics YOLO V5 with OpenCV 4.5.4, C++ and Python

yolov5-opencv-cpp-python Example of performing inference with ultralytics YOLO V

null 183 Jan 9, 2023
Simple Python project using Opencv and datetime package to recognise faces and log attendance data in a csv file.

Attendance-System-based-on-Facial-recognition-Attendance-data-stored-in-csv-file- Simple Python project using Opencv and datetime package to recognise

null 3 Aug 9, 2022
A dead simple python wrapper for darknet that works with OpenCV 4.1, CUDA 10.1

What Dead simple python wrapper for Yolo V3 using AlexyAB's darknet fork. Works with CUDA 10.1 and OpenCV 4.1 or later (I use OpenCV master as of Jun

Pliable Pixels 6 Jan 12, 2022
A series of convenience functions to make basic image processing operations such as translation, rotation, resizing, skeletonization, and displaying Matplotlib images easier with OpenCV and Python.

imutils A series of convenience functions to make basic image processing functions such as translation, rotation, resizing, skeletonization, and displ

Adrian Rosebrock 4.3k Jan 8, 2023
Solve a Rubiks Cube using Python Opencv and Kociemba module

Rubiks_Cube_Solver Solve a Rubiks Cube using Python Opencv and Kociemba module Main Steps Get the countours of the cube check whether there are tota

Adarsh Badagala 176 Jan 1, 2023
Object detection (YOLO) with pytorch, OpenCV and python

Real Time Object/Face Detection Using YOLO-v3 This project implements a real time object and face detection using YOLO algorithm. You only look once,

null 1 Aug 4, 2022
Img-process-manual - Utilize Python Numpy and Matplotlib to realize OpenCV baisc image processing function

Img-process-manual - Opencv Library basic graphic processing algorithm coding reproduction based on Numpy and Matplotlib library

Jack_Shaw 2 Dec 12, 2022
Find-Lane-Line - Use openCV library and Python to detect the road-lane-line

Find-Lane-Line This project is to use openCV library and Python to detect the road-lane-line. Data Pipeline Step one : Color Selection Step two : Cann

Kenny Cheng 3 Aug 17, 2022
A small fun project using python OpenCV, mediapipe, and pydirectinput

Here I tried a small fun project using python OpenCV, mediapipe, and pydirectinput. Here we can control moves car game when yellow color come to right box (press key 'd') left box (press key 'a') left hand when thumb finger open (press key 'w') right hand when thumb finger open (press key 's') This can be improved later by: Improving press left and right to make them More realistic. Fixing some bugs in hand tracking.

Sameh Elisha 3 Nov 17, 2022
Uses OpenCV and Python Code to detect a face on the screen

Simple-Face-Detection This code uses OpenCV and Python Code to detect a face on the screen. This serves as an example program. Important prerequisites

Denis Woolley (CreepyD) 1 Feb 12, 2022
Image Lowpoly based on Centroid Voronoi Diagram via python-opencv and taichi

CVTLowpoly: Image Lowpoly via Centroid Voronoi Diagram Image Sharp Feature Extraction using Guide Filter's Local Linear Theory via opencv-python. The

Pupa 4 Jul 29, 2022
Use Python, OpenCV, and MediaPipe to control a keyboard with facial gestures

CheekyKeys A Face-Computer Interface CheekyKeys lets you control your keyboard using your face. View a fuller demo and more background on the project

null 69 Nov 9, 2022
Compare outputs between layers written in Tensorflow and layers written in Pytorch

Compare outputs of Wasserstein GANs between TensorFlow vs Pytorch This is our testing module for the implementation of improved WGAN in Pytorch Prereq

Hung Nguyen 72 Dec 20, 2022
This project contains an implemented version of Face Detection using OpenCV and Mediapipe. This is a code snippet and can be used in projects.

Live-Face-Detection Project Description: In this project, we will be using the live video feed from the camera to detect Faces. It will also detect so

Hassan Shahzad 3 Oct 2, 2021
Face and other object detection using OpenCV and ML Yolo

Object-and-Face-Detection-Using-Yolo- Opencv and YOLO object and face detection is implemented. You only look once (YOLO) is a state-of-the-art, real-

Happy  N. Monday 3 Feb 15, 2022
Python with OpenCV - MediaPip Framework Hand Detection

Python HandDetection Python with OpenCV - MediaPip Framework Hand Detection Explore the docs ยป Contact Me About The Project It is a Computer vision pa

null 2 Jan 7, 2022
Human Detection - Pedestrian Detection using OpenCV Python

Pedestrian Detection using OpenCV Python Follow us on Instagram for Machine Lear

Hrishikesh Dutta 1 Jan 23, 2022