Compare commits

...
146 Commits
Author SHA1 Message Date
aeon0 22b468e771 New release v0.6.1 (#332)
* Bump version to v0.6.1

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

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

* also use lightning

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

* blizz sorc tuning

* Update blizz_sorc.py

indent fix

* fix indent errors

* shenk assets

* updated pather for shenk

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

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

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

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

* failed game screenshot

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

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

* clean up

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

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

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

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

* Removing old area calls

* remove logger

* Shenk Eld improvements

* Cleaning

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

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

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

* stash optimization

* add wait times

* revert version

* Fix stashing bug when gold is full

* change location

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

* no random

* fix b node

* fix game recover issue

* adapt dclone stuff

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

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

* Update for dclone ip check

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

* update for dclone for ip hunting

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

* comitting staged changes

* fixed some issues on template syntax

* merged nihlatak routine to all other files in the bot

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

* make it run

* improved consistency for traverse LVL1_B & finding start at LVL2

improved consistency for traverse LVL1_B & finding start at LVL2

* further optimized pathing for LVL1 C & LVL2A

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

* optimized pathing lvl2

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

* fine tune pathes lvl 2

* adapt to template matching nil arm C

* arm b

* fail save for branch a

* fail save for arm c

* arm d

* small clean up

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

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

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

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

* fix config

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

* Only use stash tab and wp tab if needed

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

* Update ui_manager.py

Fixed bug...

* Update pather.py

fixed scale factor

* Update i_char.py

* Update game.ini

removed tp locations

* Bump version to v0.4.3

* Bump version to v0.4.3

* implimented and tested seperation of gold and item stash counters

* removing extra newline

* not sure how this keeps creeping back...

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

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

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

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

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

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

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

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

* add some forced moves for robustification

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

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

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

* disable quickcast in settings until this is officially supported

* disable quickcast in settings until this is officially supported

* disable quickcast in settings until this is officially supported

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

* swap test templates
2021-12-04 21:47:13 -05:00
Matt Stiehm 8b438b25ff Run no item pickup command on startup (#205) 2021-12-04 23:25:44 +01:00
Dongwook Kim 3459d4a35e feat: adding magic amulet to pickable item list (#207) 2021-12-04 22:56:36 +01:00
aeon0 84d1bf1559 Revert Merc template (#206) 2021-12-04 21:57:48 +01:00
aeon0 0d6c02486a Bump version to v0.4.4 (#204) 2021-12-04 20:15:46 +01:00
aeon0 430c2557d7 Revert npc assets (#203) 2021-12-04 19:48:45 +01:00
aeon0 4bd140cac4 ... 2021-12-04 19:31:40 +01:00
aeon0 7dbbbfbebf Fix discard issue by adding a wait time (#202)
* Fix discard issue by adding a wait time

* add docs
2021-12-04 19:22:29 +01:00
aeon0 32c9483afd Use masked skill assets (#201)
* Use masked skill assets

* fix config

* increase thresh at skill selection
2021-12-04 17:45:14 +01:00
aeon0 e47c98b80c Decrease spread of attacks on pindle 2021-12-04 16:19:45 +01:00
aeon0 861b4ff639 Revert Anya templates (#199) 2021-12-04 13:34:59 +01:00
aeon0 914ac74d2f Check for available tps on start of run (#196) 2021-12-04 11:41:15 +01:00
aeon0 5d91d2ff14 Fix template selection to wait for success (#195) 2021-12-04 10:44:01 +01:00
navy91 0e4d4e7dff Adjusted threshold for gold deteciton in inventory(#191) 2021-12-04 08:03:03 +01:00
ggodev ad614cb000 game breaking sun spirit fix (#192) 2021-12-04 08:02:18 +01:00
navy91 3da81815bd skip gold stashing when there's no gold in inventory (#182)
* skip gold stashing when there's no gold in inventory

* skip stashing - performance upgrade
2021-12-03 22:44:39 +01:00
aeon0 916777b86d Fix creash on death and chicken delay (#190) 2021-12-03 21:34:25 +01:00
aeon0 32dc347e7e Prepare for shop release (#189) 2021-12-03 20:56:20 +01:00
mgleedandaeon0 10015fc73c Template alpha channel (#170)
* add support for template alpha channels

* cleaner

* fix merc pic

* fix merc pic

* comment

* NPC alpha channels and modify you_have_died detection

* adapt to automatic template loading

* show all matches in template finder

Co-authored-by: aeon0 <[email protected]>
2021-12-03 18:40:10 +01:00
egut125andaeon0 3fea6d7399 Added new param discord_status_count (#183)
discord_status_count defines number of games between discord status messages being sent. Defaults to 20

Co-authored-by: aeon0 <[email protected]>
2021-12-03 18:35:48 +01:00
aeon0 55bead2c9f Revert back to previous npc search (#185) 2021-12-03 18:24:43 +01:00
César Vargas eaf0beb83b Add saved_games_folder param (#179)
* implement saved_games_folder paramgit c

* add saved_games_folder readme entry
2021-12-03 06:59:45 +01:00
aeon0 0f60502ce1 Add Pathing for Trav (#181) 2021-12-02 23:38:28 +01:00
aeon0 69f94b2c1f Add Pathing for A3 Town (#180) 2021-12-02 22:03:23 +01:00
egut125 80d2a14d5c Add in logic when botty is paused and not trigger max game length (#167) 2021-12-02 19:04:45 +01:00
aeon0 6f0a000bf1 Template finder auto load based on filenames (#178)
* Fix gamerecovery creating 2 bot instances

* Auto load template based on filenames

* Actually load the correct templates
2021-12-02 16:40:13 +01:00
aeon0 0cee182a8d Update bug_report.md 2021-12-02 16:38:10 +01:00
aeon0 56b703e8a8 Update bug_report.md 2021-12-02 16:37:01 +01:00
aeon0 076fafb64e Fix gamerecovery creating 2 bot instances (#177) 2021-12-02 14:23:06 +01:00
aeon0 dd0084caad Update README.md 2021-12-02 12:08:20 +01:00
aeon0 1450e158f5 Fix NPC highlighted action btn (#175) 2021-12-02 11:41:00 +01:00
aeon0 4c28ab9461 Revert npc multi tempalte search (#174) 2021-12-02 11:06:05 +01:00
mgleed e34a33ac98 simplify some code based on recent search update (#171)
* simplify some code based on recent search update

* save

* save
2021-12-02 08:27:02 +01:00
mgleed 1e51c6e5e5 remove resolution conditional statement from gloves shopper (#172) 2021-12-01 22:19:48 -05:00
aeon0 1ab1195a31 New release v0.4.3 (#169)
* Bump version to v0.4.3

* increase min item score
2021-12-01 21:52:16 +01:00
664 changed files with 5561 additions and 2917 deletions
+3
View File
@@ -7,6 +7,9 @@ assignees: ''
---
**Is it really a Bug report?**
If you have questions regarding setup or feature information/requests, please consider asking in the Discord channel: https://discord.gg/Jf3J8cuXWg. The Github issues section is for bug reports only.
**Botty Version**
What version of botty are you running? Are you using a pre-compiled release? Which one. Are you using the latest master branch? On which commit?
+3 -1
View File
@@ -14,9 +14,11 @@ run.onefile-build/
generated/
botty_v*/
custom.ini
config/custom.ini
*info_*.png
.vscode
.vs/
info_screenshots/
loot_screenshots/
.venv
stats/
.venv
+133 -93
View File
@@ -1,45 +1,43 @@
# <img src="assets/docs/header_green.png" width="370">
Simple Pixelbot for Diablo 2 Resurrected single player written in python and opencv. Botty does not work for online games and is not intended for this usage!
[**Download here**](https://github.com/aeon0/botty/releases). Got to have a [**Discord**](https://discord.gg/Jf3J8cuXWg) nowadays I guess :man_shrugging:
Pixelbot for Diablo 2 Resurrected. This project is for informational and educational purposes only. Feel free to dig around, add stuff, make PRs, or ask questions should you get stuck!
[**Download here**](https://github.com/aeon0/botty/releases) and got to have a [**Discord**](https://discord.gg/Jf3J8cuXWg) nowadays I guess :man_shrugging:
And please. I urge you to actually read that README! It will make your life a lot easier.
[![Watch the video](assets/docs/video_thumbnail.png)](https://streamable.com/67h9ay)
## Getting started
Botty only supports English language! Botty is currently working in 720p and will either switch to windowed mode or to fullscreen depending on your current monitor res when you run the "Auto Settings".</br>
It is highly recommended to let botty run with /nopickup active. This will reduce the amount of accidently picked up trash by a lot. Espacially when playing builds without teleport.
## Getting started & Prequists
- D2r needs to be in English Language,
- Botty currently works with 720p D2r window (will be adjusted automatically on auto settings)
### 1) Graphics and Gameplay Settings
All settings will automatically be set when you execute `run.exe` and press the hotkey for "Adjust D2R settings" (default f9). Note that D2R should not run during this process, or if it does you will have to restart afterwards. It is not a 100% thing, in rare cases you might still have to fiddle around with your brightness. I suggest using the "Graphic Debugger" to verify your settings.
**Note**: There have been issues reported with image sharpening being truned on via the graphic card settings itself outside of D2R. Try turning it off when running botty. Also HDR should be truned off.
All settings will automatically be set when you execute `main.exe` and press the hotkey for "Adjust D2R settings" (default f9). It is not a 100% thing, in rare cases you might still have to fiddle around with your brightness. I suggest using the "Graphic Debugger" to verify your settings.
**Note**: Make sure that no other external programs adapt your graphics settings (HDR, Geforce Experience, etc.)
### 2) Supported builds
#### 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 __custom.ini__ or __param.ini__ for the `[char]` and `[sorceress]` section accordingly. Check out the param.ini section in the Readme for more details on each param.
#### Hammerdin
Your standard Hammerdin with Enigma. Dont think I have to explain much here. Same story as with sorc, set up your skills in the .ini file to what you have in D2R or the other way around. When running more than just pindle or shenk you need to start with a full tome of tps in your inventory.
Check the documentation for **param.ini** further down. Different Sorc builds, Hammardin, Barb, Trapsin are already implemented to different extents. It is quite straightforward to implement new classes. Give it a go if you like!
### 3) Start Location
Open up D2R and wait till you are at the hero selection screen. Make sure the char you running with is selected and will be in A5 in the respective difficulty you set in the __param.ini__ once the bot starts the game.
Open up D2R and wait till you are at the hero selection screen. Make sure the char you running with is selected and will be in any of Act 3, 4 or 5 in the respective difficulty you set in the **param.ini** once the bot starts the game.
### 4) Start Botty
Download the a prebuilt release [here](https://github.com/aeon0/botty/releases). Start `run.exe` in the botty folder. Switch (ALT+TAB) to your D2R window and press the start key (default f11). You can always force stop botty with f12.
You can either run from python. Follow [development.md](development.md) for that. Or you download the a prebuilt release [here](https://github.com/aeon0/botty/releases) (the .rar file!). Start `main.exe` in the botty folder. Focus your D2R window and press the start key (default f11). You can always force stop botty with f12.
## Graphic Debugger
To check if you graphic settings are good and if the bot would pick up items there is a **Graphic Debugger Mode** built in. Start botty and press F10 (Default key). This will open up a (mostly black) window. Start a game in D2R and go to A5. You should see some templates with blue circles detected and scores printed out to the console. E.g. for 720p you should see scores higher 0.8 for the templates. To check item finding, throw some items of different types on the ground. The debug window should show the item names with black background. If you throw an item on the ground that should be picked up, it will have a red circle. The console will print out the scores for each item that would be picked up. Scores should be well above 0.9 for these items.</br>
To check if you graphic settings are good and if the bot would pick up items there is a **Graphic Debugger Mode**. Start botty and press F10 (Default key). This will open up a (mostly black) window. Start a game in D2R and go to A5. You should see some templates with blue circles detected and scores printed out to the console. To check item finding, throw some items of different types on the ground. The debug window should show the item names with black background. If you throw an item on the ground that should be picked up, it will have a red circle. The console will print out the scores for each item that would be picked up. Scores should be well above 0.9 for these items.</br>
<img src="assets/docs/graphic_debugger.png" width="900">
## Development
Check out the [development.md](development.md) docu for infos on how to build from source and details of the project structure and code.
## param.ini
To ease the switch to new botty versions, you can also overwrite any of the param.ini fields in a __custom.ini__ file. When a new version of botty is released you just copy the file to the new version without having to port all your __param.ini__ changes to the new version. Example:
All botty configuration files are located in the __config__ folder. To ease the switch to new botty versions, you can also overwrite any of the .ini fields in a **custom.ini** file. When a new version of botty is released you just copy the file to the new version without having to port all your **param.ini** changes to the new version. Example:
```ini
; custom.ini - overwrites 3 params in the param.ini
[general]
@@ -50,85 +48,127 @@ run_pindle=1
run_shenk=0
```
[general] | Descriptions
--------------------------------|---------------------------------------------
name | Name used in terminal and discord messages
monitor | Select on which monitor D2R is running in case multiple are available
max_game_length_s | Botty will attempt to stop whatever its doing and try to restart a new game. Note if this fails, botty will attempt to shut down D2R and Bnet
exit_key | Pressing this key (anywhere), will force botty to shut down
resume_key | After starting the exe botty will wait for this keypress to atually start botting away
graphic_debugger_key | Pressing this key will start a debug mode to check if the color filtering works with your settings. It also includes the item search and marks items it would pick up with red circles
logger_lvl | Can be any of [info, debug] and determines how much output you see on the command line
randomize_runs | If 0, the order will always be pindle -> eldritch/shenk. If 1 the order will be random.
difficulty | Set to `normal` `nightmare` or `hell` for game difficulty
custom_discord_hook | Add your own discord hook here to get messages about drops and in case botty got stuck and can not resume
info_screenshots | If 1, the bot takes a screenshot with timestamp on every stuck / chicken / timeout / inventory full event. This is 1 by Default, so remember to clean up the folder every once in a while
loot_screenshots | If 1, the bot takes a screenshot with timestamp everytime he presses show_items button and saves it to loot_screenshots folder. Remember to clear them once in a while...
| [general] | Descriptions |
| -------------------- | --------------------------|
| name | Name used in terminal and discord messages |
| monitor | Select on which monitor D2R is running in case multiple are available |
| custom_message_hook | Add your own message hook here to get messages about drops and botty status updates, discord webhook is default |
| logger_lvl | Can be any of [info, debug] and determines how much output you see on the command line |
| max_game_length_s | Botty will attempt to stop whatever its doing and try to restart a new game. Note if this fails, botty will attempt to shut down D2R and Bnet |
| randomize_runs | 0: the order will be as seen in the params.ini. 1: the order will be random |
| difficulty | Set to `normal` `nightmare` or `hell` for game difficulty |
| discord_status_count | Number of games between discord status messges being sent. Leave empty for no status reports.
| discord_status_condensed | Toggles condensed view of Discord status messages. 0 Full text, 1 Condensed text.
| info_screenshots | If 1, the bot takes a screenshot with timestamp on every stuck / chicken / timeout / inventory full event. This is 1 by Default, so remember to clean up the folder every once in a while |
| loot_screenshots | If 1, the bot takes a screenshot with timestamp everytime he presses show_items button and saves it to loot_screenshots folder. Remember to clear them once in a while... |
| saved_games_folder | Optional folder path of Diablo 2 : Ressurrected saved games that will be used to overwrite when running the "auto settings" |
[routes] | Descriptions
--------------------------------|---------------------------------------------
run_pindle | Run Pindle in each new game. Select "1" to run it "0" to leave it out.
run_eldritch | Run Eldritch in each new game. Select "1" to run it "0" to leave it out.
run_shenk | Run shenk in each new game. Select "1" to run it "0" to leave it out.
| [routes] | Descriptions |
| ------------ | ------------------------------------------------------------------------ |
| run_trav | Run Trav in each new game. Select "1" to run it "0" to leave it out. Specific trav gear is suggested |
| run_pindle | Run Pindle in each new game. Select "1" to run it "0" to leave it out. |
| run_eldritch | Run Eldritch in each new game. Select "1" to run it "0" to leave it out. |
| run_shenk | Run shenk in each new game. Select "1" to run it "0" to leave it out. |
| run_nihlatak | Run Nihlatak in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
[char] | Descriptions
--------------------------------|---------------------------------------------
type | Build type. Currently only "sorceress" or "hammerdin" is supported
casting_frames | Depending on your char and fcr you will have a specific casting frame count. Check it here: https://diablo2.diablowiki.net/Breakpoints and fill in the right number. Determines how much delay there is after each teleport for example.
stash_gold | Bool value to stash gold each time when stashing items
atk_len_pindle | Attack length for hdin or number of attack sequences for sorc when fighting pindle
atk_len_eldritch | Attack length for hdin or number of attack sequences for sorc when fighting eldritch
atk_len_shenk | Attack length for hdin or number of attack sequences for sorc when fighting shenk
num_loot_columns | Number of columns in inventory used for loot (from left!). Remaining space can be used for charms
take_health_potion | Health percentage when healing potion will be used
take_mana_potion | Mana percentage when mana potion will be used. Currently belt managment is not very clever and it is safest to only pick up health pots and make sure mana reg is enough for pindle to not need mana pots.
heal_merc | Merc health percentage when giving healing potion to merc
chicken | Will chicken (leave game) when player health percentage drops below set value, range 0 to 1. Set to 0 to not chicken.
merc_chicken | Will chicken (leave game) when merc health percentage drops below set value, range 0 to 1. Set to 0 to not chicken.
show_items | Hotkey for "show items"
inventory_screen | Hotkey to open up inventory
stand_still | Hotkey for "stand still". Note this can not be the default shift key as it would interfere with the merc healing routine.
tp | Hotkey for using a town portal
belt_rows | Integer value of how many rows the char's belt has
show_belt | Hotkey for "show belt"
potion1 | Hotkey to take potion in slot 1
potion2 | Hotkey to take potion in slot 2
potion3 | Hotkey to take potion in slot 3
potion4 | Hotkey to take potion in slot 4
belt_rejuv_columns | Number of belt columns for rejuv potions
belt_hp_columns | Number of belt columns for healing potions
belt_mp_columns | Number of belt columns for mana potions
cta_available | 0: no cta available, 1: cta is available and should be used during prebuff
weapon_switch | Hotkey for "weapon switch" (only needed if cta_available=1)
battle_order | Hotkey for battle order from cta (only needed if cta_available=1)
battle_command | Hotkey for battle command from cta (only needed if cta_available=1)
| [char] | Descriptions |
| ------------------ | -------------------------------------------------------------------------------------------------|
| type | Build type. Currently only "sorceress" or "hammerdin" is supported |
| casting_frames | Depending on your char and fcr you will have a specific casting frame count. Check it here: https://diablo2.diablowiki.net/Breakpoints and fill in the right number. Determines how much delay there is after each teleport for example. If your system has some delay e.g. on vms, you might have to increase this value above the suggest value in the table! |
| num_loot_columns | Number of columns in inventory used for loot (from left!). Remaining space can be used for charms |
| show_items | Hotkey for "show items" |
| inventory_screen | Hotkey to open inventory |
| force_move | Hotkey for "force move" |
| stand_still | Hotkey for "stand still". Note this can not be the default shift key as it would interfere with the merc healing routine |
| tp | Hotkey for using a town |
| belt_rows | Integer value of how many rows the char's belt has |
| show_belt | Hotkey for "show belt" |
| potion1 | Hotkey to take potion in slot 1 |
| potion2 | Hotkey to take potion in slot 2 |
| potion3 | Hotkey to take potion in slot 3 |
| potion4 | Hotkey to take potion in slot 4 |
| cta_available | 0: no cta available, 1: cta is available and should be used during prebuff |
| weapon_switch | Hotkey for "weapon switch" (only needed if cta_available=1) |
| battle_order | Hotkey for battle order from cta (only needed if cta_available=1) |
| battle_command | Hotkey for battle command from cta (only needed if cta_available=1) |
| stash_gold | Bool value to stash gold each time when stashing items |
| gold_trav_only | Hacky config that will restrict gold pickup to trav only. misc_gold must be set to 1 for this to have any effect |
| use_merc | Set to 1 for using merc. Set to 0 for not using merc (will not revive merc when dead), default = 1 |
| atk_len_trav | Attack length for hdin fighting trav (note this atk length will be applied in 4 different spots each) |
| atk_len_pindle | Attack length for hdin or number of attack sequences for sorc when fighting pindle |
| atk_len_eldritch | Attack length for hdin or number of attack sequences for sorc when fighting eldritch |
| atk_len_shenk | Attack length for hdin or number of attack sequences for sorc when fighting shenk |
| atk_len_nihlatak | Attack length for hdin or number of attack sequences for sorc when fighting nihlatak |
| take_health_potion | Health percentage when healing potion will be used. e.g. 0.6 = 60% helath |
| take_mana_potion | Mana percentage when mana potion will be used |
| take_rejuv_potion_health | Health percentag when rejuv potion will be used |
| take_rejuv_potion_mana | Mana percentag when rejuv potion will be used |
| heal_merc | Merc health percentage when giving healing potion to merc |
| heal_rejuv_merc | Merc health percentage when giving rejuv potion to merc |
| chicken | Will chicken (leave game) when player health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
| merc_chicken | Will chicken (leave game) when merc health percentage drops below set value, range 0 to 1. Set to 0 to not chicken. |
| belt_rejuv_columns | Number of belt columns for rejuv potions |
| belt_hp_columns | Number of belt columns for healing potions |
| belt_mp_columns | Number of belt columns for mana potions |
| pre_buff_every_run | 0: Will only prebuff on first run, 1: Will prebuff after each run/boss |
[sorceress] | Descriptions
--------------------------------|---------------------------------------------
teleport | Required Hotkey for teleport
skill_left | Required Hotkey for skill that is used on left mouse btn (e.g. Glacial Spike)
skill_right | Required Hotkey for skill that is used on right mouse btn (e.g. Blizzard)
frozen_armor | Optional Hotkey for frozen armor (or any of the other armors)
energy_shield | Optional Hotkey for energy shield
thunder_storm | Optional Hotkey for thunder storm
### Builds
| [sorceress] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| teleport | Required Hotkey for teleport |
| frozen_armor | Optional Hotkey for frozen armor (or any of the other armors) |
| energy_shield | Optional Hotkey for energy shield |
| thunder_storm | Optional Hotkey for thunder storm |
[hammerdin] | Descriptions
--------------------------------|---------------------------------------------
teleport | Optional Hotkey for teleport. If left empty hammerdin will run instead of teleport.
concentration | Required Hotkey for Concentration
holy_shield | Hotkey for Holy Shield
blessed_hammer | Hotkey for Blessed Hammer
redemption | Optional Hotkey for redemption
vigor | Optional Hotkey for vigor
| [light_sorc] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| chain_lightning | Optional Hotkey for chain_lightning (must be bound to left skill) |
| lightning | Required Hotkey for lightning (must be bound to right skill) |
[advanced_options] | Descriptions
--------------------------------|---------------------------------------------
pathing_delay_factor | A linear scaling factor, between 1 and 10, applied to pathing delays.
template_threshold | Threshold to find templates used during pathing.
| [blizz_sorc] | Descriptions |
| ------------- | ----------------------------------------------------------------------------- |
| ice_blast | Optional Hotkey for ice_blast (must be bound to left skill) |
| blizzard | Required Hotkey for Blizzard (must be bound to right skill) |
[items] | Descriptions
--------------------------------|---------------------------------------------
item_type | 0: Item will not be picked up. 1: Item will be picked up. 2: Item will be picked up and a discord message will be sent.
| [hammerdin] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty hammerdin will run instead of teleport. |
| concentration | Required Hotkey for Concentration |
| holy_shield | Required Hotkey for Holy Shield |
| blessed_hammer | Required Hotkey for Blessed Hammer. (Must be set as left skill!) |
| redemption | Optional Hotkey for redemption |
| vigor | Optional Hotkey for vigor |
| [trapsin] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty trapsin will run instead of teleport. |
| skill_left | Optional Hotkey for Left Skill |
| burst_of_speed | Optional Hotkey for Burst of Speed |
| fade | Optional Hotkey for Fade |
| shadow_warrior | Optional Hotkey for Shadow Warrior |
| lightning_sentry | Required Hotkey for Lightning Sentry |
| death_sentry | Required Hotkey for Death Sentry |
| [barbarian] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
| teleport | Optional Hotkey for teleport. If left empty barb will run instead of teleport. |
| leap | Required Hotkey for Leap |
| shout | Required Hotkey for Shout |
| war_cry | Required Hotkey for War Cry |
| find_item | Optional Hotkey for Find Item |
| [dclone] | Descriptions |
| -------------------- | --------------------------------------------------------------------- |
| region_ips | Start of the region ip you want to filter for. e.g. EU Server = 37.244.11, 37.244.48 |
| dclone_hotip | Hot ip you are looking for. Botty will stay in game and message you if a message_hook is set |
| [advanced_options] | Descriptions |
| -------------------- | --------------------------------------------------------------------- |
| pathing_delay_factor | A linear scaling factor, between 1 and 10, applied to pathing delays. |
| message_headers | Headers that are sent with each messages |
| message_body_template | Message body of the post message sent |
| message_highligh | 0: Send messages as is, 1: Uses message highlighting for discord |
## Support this project
Support it by contributing in any technical way, giving feedback, bug reports or submitting PRs.
+3 -1
View File
@@ -42,5 +42,7 @@
"Chat Gem Mode": 1,
"Item Name Display": 1,
"Chat Background": 0,
"Always Run": 1
"Always Run": 1,
"Quick Cast Enabled": 0,
"Display Active Skill Bindings": 0
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

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