Compare commits

..
109 Commits
Author SHA1 Message Date
mgleed c1f2cad291 Bugfix: Game recovery after D2 restart (#620)
* init

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

* simplify

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

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

* Fix send_stash message when stash is full

* remove self

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

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

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

* spell check, simplify

* center mouse after opening NPC menu

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

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

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

* migration from original ocr complete, now troubleshooting phase

* first

* starts now

* catching more

* pause here, fix keep_item for ItemText class

* getting close

* adjust consumable quantity to refill per Legit

* fix import, refactor tp scroll tracking

* fixed property checking

* merge master, fix discord embed

* move tp charge setter

* properly track id scrolls after use

* fix accidental stashing

* fix sell_junk and chest_label bugs

* working on drognan instead of lysander

* a2 pathing, drognan support

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

* better drognan pathing

* comment out pather stuff

* restore old asset

* proper tp tracking

* revert key pickup to decrease need by 1

* fixing gambling, WIP

* working on gambling

* add comments to transfer_items

* add comments to transfer_items

* gambling semi-working, not stashing right

* simplify gambling process

* incorporate OCR gold reading to gamble, WIP

* gambling is painful

* simplified gambling - ~done

* finally finished gambling!

* fix diablo inventory check

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

* fix condition

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

* cleanup

* init

* add support for grayscale + color_filtered

* cleanup logic

* only generate grayscale templates if use_grayscale=True

* simplify template_gray logic

* fix false detection of out of gold

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

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

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

* logic advanced vs normal pickit

* logic_empty_ID_Tome

* small adj. to fit PR

* converted yaml to ini. changed some val.

* changed param to auto_ident

* pickit integration

* added set in routine

* reset bot init value

* bugfix

* removed old id logic

* added_nested_filter

* changed pickit

* bugfix replace

* added some more props

* Cleanup

* cleanup

* cleanup

* started unittests

* unittest

* small pickit adjustments

* Added missing fct. after merge

* bugfix due to static method in config.py

* added comments in pickit.ini

* Update pickit.ini

* Update params.ini

* Update ui_manager.py

* Update pickit.ini

* bugfix

* remove redundant for loop, use set_gold_full

* fix merge

* simplify

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

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

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

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

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

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

* cleanup, fix messanger typo

* cleanup

* rename player. to personal.

* saved

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

* cleanup

* cleanup

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

* rearrange

* Update discord_embeds.py

* Update generic_api.py

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

* bugfixes. now stable & testing

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

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

* Hardcode x,y and 'double click'

* Remove hardcode x, y since it's not guaranteed to be accurate
2022-02-16 20:28:11 -05:00
mgleed 92300818c3 Bump to 0.6.7 2022-02-16 00:20:05 -05:00
mgleed e46edbc6aa Bugfix: Shenk offset stacking (#548)
* Bugfix: Shenk offset stacking

* bump to 0.6.6

* move stuff around
2022-02-15 14:57:30 -05:00
Vladimir MakaevandVladimir Makayev e304e227c8 Bugfix: Diablo was passed as char to pickit (#551)
Co-authored-by: Vladimir Makayev <[email protected]>
2022-02-15 14:10:47 -05:00
jobithu 77149a621f CS Hammerdin: optional skills now checked for binding before cast (#550)
* optional skills now checked for binding before cast

* forgot 628
2022-02-15 07:12:17 -05:00
John Wu 6a213014b8 Enhancement: Add more chest assets (#547) 2022-02-14 21:08:02 -05:00
a9c3e125ab Feature: Diablo optimization & Killing Trash in Chaos Sanctuary (#460)
* C1F & B1S switched to static pathing

* Improved overall robustness

* improved A layout check consistency

* added A layout check consistency & CTA rebuff

* Home now a loop, B now first seal to pop.

* Trash clear at pentagram, B1S, C1F loop added.

* Changed DeSeis attack pattern so MERC can kill

* tweaked diablo spawn timer & vizier attack pattern

* fixed minor pickit error.

* fixed Layout B Check loop & improved C1F

* improved C1F pathing home

* improved B layout check by removing trash kill

* added C2G static path to infector & loop home

* tweaked pathing

* lots of pathing tweaks to increase consistency

* Clarified Logger.Info

* Fixed A1L Tele to Lava Bug

* Fixed A1Y Tele Lava bug

* Fixed B2U missing pentagram on loop back

* fixed logger

* Completely reworked layout checks

* Reworked C seal layout check

* fixed ending up too low at Diablo

* optimized loop home for C

* added all seals

* removed duplicate trash sequence at C

* Fixed B2U looping home, added essence

* Template Check Threshold raised for Layout Checks

* Reverted A layout check back to inital version

* Aggressive Layout Checks implemented.

* Replaced Pentagram Templates to improve [602]

* Fixed loops for new pent layout

* Reverted A layout checks back to initial version

* merged 6.1?

i hope it worked.

* Pressure Test: A2Y 98% layout check success

* Massive improvements on Layout Checks

* Integrated Skizot's A4 merchants

* Fixed an error on A1L.

* fixed a small error on final pickit

* Slight Cleanup

* tweaked A2Y nodes to avoid lava jumps

* Added B2U Seal Logging

* Add templ. to 611 & 610 to fix stuck pather

* WiZ/SwePow suggestions

* Some more tweaking

* Trying to improve B layout checks (not full run)

* Seal B logic pressure test (no full run)

* added timeouts to weak traversenodes (no full run)

* Pacifist Version - just checking layouts no bosses

* Pure Layoutcheck Pressure Test (double checks)

* Pacifist mode: Layout Check

* Update bot.py

* Added Templates to improve Layoutchecks

* Tweaked B2U Templates (Pacifist Version)

* add B2U nodes & calibration to impr. layout check

* added nodes to layout checks

* Added A1L Calibration Node for Layoutcheck

* Full running script

* Fixed Calibrations - Full Run

* fixed mousover keyerror

* yet another mousover

* fixed a pather issue on B1S, full run

* yet another mousover. full run.

* mousover... ful run

* yet another mousover. full run

* fixed C2G looping across pentagram

* Update game.ini

* WiZ testing

* added seal_node to sealdance

* added C1F layoutcheck nodes

* Added Wiz Speedrun

* tweaked wait in sealdance

* A1L-Static path to Pentagrram

* added A2Y hop 622

* A2Y static path home

* B1S static path home

* changed C1F fake template

* added new C1F seals & static home

* Speed or no speed

Using kill_cs_trash config

* fixed a 36b key error

* Random guess actually is random now

It wasnt random at all before so trying out if this is better

* Minor fixes and tweaks

* B2U - Static Path Home

* Redworked C1F - not stable yet

* Seal order B,C,A and DeSeis fix

There was copy/paste bug in DeSeis making it use wrong atk_len and then I also tuned the attacks a bit.

* fixed final B2U issue, should be stable now!

* added B2U 644_646 static path

* added mapping

* A seals fixed hopefully

More testing tomorrow!

* run diablo py

Yours is the diabloC, I didnt have time to compare them before sleep and wanted you to have both in case

* so this should be super stable now!

* Reverted A1L & A2Y Seal Order (but kept WiZ Idea)

* Reverted Seal Order

* Added Rudi TP :)

* all loop home now

* added TP  template to loop

* typo

* stashs & shrine gfx, TP counter

* removed pent_6 (many false positives looping home)

* clean up for aeon

* fixed typos

* New A2Y & C2G home pathing

* Reworked C1F 704 to avoid stuck

* Ready to test!

* fixed pather clicking outside D2R

* Tweaked Seal A

* Loot to Sealdance() & A2Y tweaks

* removed FALSE from TP fail

* Updated Readme.md

* remove env

* clean up code

* account for used tp

* Removed Dia C1F 700s and replaced with 650s

* Moved Seals, Fights & Pickit to Hammerdin file

* #Trapsin now supported for Arcane and CS
#Trapsin now optionally uses defensive spells Cloak of Shadows and Mind Blast
#Trapsin now waits for Shadow Warrior before using CTA

* Update readme

* Working version

* added  trapsin

* added nova sorc

* added nova sorc

* added light & nova sorc

* added clear trash, issue on 1 function

* Added Clearing Trash

* added 1 tele stop between WP & Pentagram

* fixed mistake on i_char

* CS Trash is now available for beta testing

* fixed a minor issue

* percised some debug logging

* Added CS Trash for Necro, Trapsin, Sorc (no blizz)

* added CS trash to Necro, Trapsin, Sorc_Light _Nova

* # moved functions from chars back to diablo.py
# removed CS for all chars execept hammerdin
# added seal_layout to sealboss functions
# added location to cs_kill_trash functions

* removed pickit from hammerdin.py

* trying to fix some attribute errors for pre_move

* forgot to add _char for pather.traverse_nodes

* added & removed some ._char, now it runs :)

* fixed a missing argument & cleaned up

* clear_trash=1 implemented & working

* added more kill_trash options

* added more debug info & generic kill trash spots

* fixed some debugger errors

* hammerdin done

* updated readme for cs_trash

* #merged A1L and A2Y pathing to char.py
# added A2Y static pathing to Pentagram

* fixed some errors ...

* A1L & A2Y work with new pathing logic

* Ok generic Diablo.py should now work

* and hammerdin.py aswell

* full run

* moved C1F static path to hammerdin.py

* fixed an error for pathing

* Improved A LC consistency to >99%

* Colors!

* added 2 A1L LC templates

* moved pickit to hammerdin.py

* 4min runs

* removed timeouts. 88% killrate right now.

* Added Logparser (thanks famE)

* separated log parser columns

* tweaked log parser

* changed positions of de seis kill screenshots

* added clearing trash between Pent & LC

* fixed missing _self

* Added option for cs_town_visits between seals

* Improved B1S loop home & tweaked some messages

* fixed an error not clearing seals & added colors

* removed 632 duplication & not needed LC templates

* added clear trash to A & B LC

* added pickup at 646

* added PENT_2 Template & removed fail shrine checks

* Added C2G Templates currently only 82% good runs

* Added Hybrid Calibration Nodes

* re-added templates for LC

* added 1px to WP->PENT traverse to avoid missing it

* tweaked home from 632 for not missing pent

* added more redemption before 632 calibration

* merged individual seals to one function

* fixed seal template error

* Added LC function. Fixed C2G & Loop to Pent-Stable

* added atk_len for diablo

* fixed typo so log parser stats are right

* added & increased threshold to LC calibration

* fixed new LC threshold oO - should push less often

* reverted B LC back to initial order

* log parser tweaks

* added shrine check to pather.py

* replaced 630640 with 647

* added B1S LC templates & changed shrine check

* swapped LC for B (current had 75%)

* reworked cs_trash up to LC

* log parse counts templates used

* Fixed B Layout checks

* log parser now w. templates. shrine check added

* just changes to debug names & adding a nicer table for botty start :P

* #best match & time_out=0.1,
#return false on nodes
#new shrine ROI

* Force Stashing before running Dia, logger wording

* shrine check less frequent. char.py cleaned up

* reworked trash layout B

* added 603 ROF1 templates

* added info to params.ini to reduce Q&A in discord

* # added stash every run param
# transferred trash choreography to char.py
# reverted some template changes.

* Ready to merge. Not perfect, but much better!

* small fix before merging

* Update nova_sorc.py

* Update basic.py

* added missing templates causing an error @602

* C2G: static path LC 661 & comment screenshots

* various changes--changed some info to debug, changed floats in config, adjusted runs_per_stash logic

* autoformatting made me commit

* nodes for trash between pent & seal. A works B is bad.

* fix bool -> bool(int(

* added calibration nodes for trash pent>seal

* Full run for testing efficacy of new trash nodes

* fixed a pathing issue

* reverted back to old method for trash.

* Ready for merge.

Co-authored-by: WiZ <[email protected]>
Co-authored-by: aeon0 <[email protected]>
Co-authored-by: mgleed <[email protected]>
2022-02-14 16:25:45 -05:00
Vladimir Makaev 94a617f9ae Bugfix: incorrect path offset for shenk. Optimize tele charges (#545)
* Fix incorrect path offset for shenk. Enable using charges to optimize the run

* Do offset in case can_teleport_natively vs can_teleport_with_charges
2022-02-14 16:21:47 -05:00
mgleed c85a360152 Bugfix: Messenger has no attribute "send" 2022-02-14 12:58:48 -05:00
mgleed 81a783624e Bump to v0.6.5 (#536) 2022-02-13 08:33:39 -05:00
Ezro d679858d30 Refactor: Track nopickup status in GameStats and only /nopickup once (#534)
* Track nopick status in GameStats and only /nopick once

* Rename var from nopick_active to nopickup_active
2022-02-11 22:39:00 -05:00
mgleed 5bb62a9642 Bugfix: string literal, added tp charges debug line (#535) 2022-02-11 21:50:57 -05:00
Vladimir Makaev 27388b82fc Bugfix: remap keybind is crashing (#533) 2022-02-11 13:48:11 -05:00
mgleed 35b5d7d6f8 Bugfix: Correct handling of empty img parameter 2022-02-11 13:47:17 -05:00
mgleed 883aa4468a Bugfix: Incorrect merge for turning off gold pickup (#530) 2022-02-08 21:28:14 -05:00
mgleed 64908630f4 Update transmute.py (#528) 2022-02-08 20:57:46 -05:00
mgleed 56bde23156 Cleanup: Artifact from recent PR (#521) 2022-02-08 20:56:05 -05:00
Vladimir Makaev 9c0fa2207c Bugfix: Skip Transmuting if Cube isn't empty (#529) 2022-02-08 20:52:42 -05:00
Vladimir MakaevandVladimir Makayev a1a1a5f375 Fix barbarian crashing on pre_move() (#527)
Co-authored-by: Vladimir Makayev <[email protected]>
2022-02-08 20:32:36 -05:00
Steve6030 4e35b8a1a8 Correcting poison resist asset spelling. (#523) 2022-02-08 20:32:10 -05:00
Brett Davis 589fda539f Bugfix: Config constructor no longer takes a string (#522) 2022-02-08 20:31:29 -05:00
mgleed c65ae545df Bugfix: Provide precompiled tesserocr (#520)
* Revert tesserocr to conda-forge rather than pip

Tesserocr with Tesseract > 5 works with pip install but installer fails if user doesn't have VS compilers. Will revisit

* fixed by providing precompiled tesserocr
2022-02-06 15:14:12 -05:00
RB-Developmentandmgleed 5ae6194d23 gambling bugfix (#519)
* Update ui_manager.py

Fix for gambling issue. Looks like self._config.char["gamble_items"] always returns true. Therefore im checking if the first entry is empty and go for a not.
not self._config.char["gamble_items"][0]==""

* simplify

Co-authored-by: mgleed <[email protected]>
2022-02-06 12:09:50 -05:00
mgleed b83dbb8e8d Track item charges with OCR (#516) 2022-02-06 00:12:45 -05:00
mgleed f8e41d525b OCR as a service (#505) 2022-02-05 23:49:17 -05:00
Vladimir Makaev d9624e04c1 Fix game isn't restarted when in main menu / character selection screen (#517)
* Fix max_game_length_s isn't properly tracked during character selection

* Fix restart routine not waiting for main menu to appear.
2022-02-05 21:23:44 -05:00
mgleed f4ff1b953f bugfix: runs_per_repair = 0 modulo issue (#515) 2022-02-05 15:58:30 -05:00
pokzcodes da6ccc6250 Kill d2r when botty cannot recover and shuts down (#511) 2022-02-05 13:52:41 -05:00
pokzcodes a87d72a044 Added exception handling to Discord API calls (#510)
* added exception handling to discord api calls

* restored accidental deleted vars

* removed word "discord" from log in generic api
2022-02-05 13:24:41 -05:00
mgleedandVladimir Makaev ab1d496fff Change always_repair to runs_per_repair (#509)
**This is potentially a breaking change for users using `always_repair`**

Co-authored-by: Vladimir Makaev <[email protected]>
2022-02-05 13:24:13 -05:00
mgleed 5d4e7e8dec Add more act 5 paths (#506)
* initial

* finished a TODO!
2022-02-05 13:22:52 -05:00
mgleed e4f2ae4826 Bugfix: vendor_stash merging artifact (#514) 2022-02-05 10:30:00 -05:00
mgleed 1315d9decb Bugfix for TP charge detection: use color_filter instead of template match threshold (#513) 2022-02-05 10:29:36 -05:00
c358282e68 Launch botty from town or main menu; fix character recovery after restart/death (#494)
* Add ability to launch botty from either main menu or town

* Fix game recovery routine is stuck forever on character selection screen

* Move _char_template to class variable to be able to share among instances

* fix character recovery and character select, support offline/online. WIP

Co-authored-by: Vladimir Makayev <[email protected]>
Co-authored-by: mgleed <[email protected]>
2022-02-04 20:27:56 -05:00
Vladimir Makaev c57e820d63 Fix character stuck trying to teleport in town (#512) 2022-02-04 19:02:43 -05:00
Vladimir MakaevandVladimir Makayev 6b1e155197 Support Gem Transmuting (#491)
Co-authored-by: Vladimir Makayev
2022-02-04 17:58:41 -05:00
Vladimir Makaev 47c5e20238 Optimized handling of teleport charges (#476) 2022-02-04 14:59:39 -05:00
RB-Development 36d3c2e913 Gambling by @RB-Development (#445)
This branch will detect if stash is full of gold. Afterwards the gambling functionality (currently only in act 4 implemented) will be called. The bot will gamble for specific items (determined in params.ini) until no gold is left. He will check for properties specified in pickit.ini and sell not matching items.
Supported items are: ring, amulet, circlet, coronet, talon

Leverages recent advanced pickit PR.
2022-02-04 14:12:56 -05:00
mgleed 06623142f7 Controller item spacing 2022-02-04 12:42:38 -05:00
mgleed 1b9fdad539 fix gold stashing (#508) 2022-02-04 12:25:50 -05:00
egut125 c0a598cc34 Merge pull request #503 from aeon0/max-consecutive-fails
New Param for fails, if max is reached, kill botty. Defaults off.
2022-02-04 10:15:16 -05:00
egut125 e3fd1b61f5 Merge pull request #504 from aeon0/stash-bugfix
stash bugfix
2022-02-03 22:31:20 -05:00
mgleed 2dcc8fcdfe gdi 2022-02-03 22:26:32 -05:00
mgleed 6fe9a18d43 Make gold low priority during pickit (#502)
By @codahq
2022-02-03 18:10:29 -05:00
egut125 9f8bed6efb New Param for fails, if max is reached, kill botty. Defaults off. 2022-02-03 14:45:45 -05:00
mgleedandaeon0 0121c7af2e Allow color_filter to range <0, >180 in H; etc. (#492)
* initial

* move image erosion from item_cropper.py to misc.py for planned use elsewhere

Co-authored-by: aeon0 <[email protected]>
2022-02-03 07:28:55 +01:00
mgleed 1d84a86e0b Updates to template_search, trim lots of code throughout (#499)
* initial

* Support list of templates (not just template names) as an input for search()

* fix grayscale for new list of templates
2022-02-03 07:17:57 +01:00
mgleed 99f8c65c2e Nihlathak spelling (#488)
Unified the variety of nihlathak spellings throughout the codebase
2022-02-01 21:34:21 -05:00
Vladimir Makaev 0ec7ced4d6 Nihlathak pathing for lightning sorc (#495) 2022-02-01 16:51:13 -05:00
RB-Developmentaeon0mgleed
551a547ddb Advanced pickit (#383)
* logic for ident, first attr. advanced pickit

* logic advanced vs normal pickit

* logic_empty_ID_Tome

* small adj. to fit PR

* converted yaml to ini. changed some val.

* changed param to auto_ident

* pickit integration

* added set in routine

* reset bot init value

* bugfix

* removed old id logic

* added_nested_filter

* changed pickit

* bugfix replace

* added some more props

* Cleanup

* cleanup

* cleanup

* started unittests

* unittest

* small pickit adjustments

* Added missing fct. after merge

* bugfix due to static method in config.py

* added comments in pickit.ini

* Update pickit.ini

* Update params.ini

* Update ui_manager.py

* Update pickit.ini

Co-authored-by: aeon0
Co-authored-by: mgleed
2022-01-30 19:40:36 -05:00
aeon0 09caab2120 Move messanger (#498) 2022-01-30 15:30:47 +01:00
aeon0 2905ee5d31 Remove configs (#497)
* remove config window always on top

* remove message highlights

* only use win32api for window offset
2022-01-30 13:26:10 +01:00
aeon0 e9d31f220f Config cleanup (#496) 2022-01-30 11:59:52 +01:00
aeon0 27f0e3d793 Revert "Add Linting (#487)" (#490)
This reverts commit 5e1a783394.
2022-01-28 18:24:47 +01:00
aeon0 5e1a783394 Add Linting (#487)
* add black linting

* fix linting

* doc update
2022-01-28 17:47:03 +01:00
AlekseyLesnoy 7aef2a6a73 fix window detection with multiple monitors via winapi (#483) 2022-01-28 16:51:52 +01:00
flapjax 9761f87826 fix duplicate bot name in status update message (#458)
* fix duplicate bot name in status update message

This commit changes the behavior of the _send_status_update method. If the generic_api is in use, it will avoid adding the bot name to the start of the message because the bot name is already added by the generic api.

* fix duplicate bot name in status update message

This commit moves the fix to the DiscordEmbeds class instead of performing it with an if statement in the GameStats class.
2022-01-24 16:17:53 +01:00
nlapinski 3321b7bc84 necro fixes (#470)
* trav walking repathing

* trav source paths for walking

* traverse image threshold

* shenk death check

* images to check summon status

* enter durance

* default configs
2022-01-24 16:13:20 +01:00
pokzcodes 667c2a4dc5 Add option to fill shared stash tabs first (useful for HC characters) (#472)
* fixed bug w/ walking hammerdin that would cause vigor to be left on while attacking in trav

* added option to fill shared stash first

* reverted a change not related to this PR
2022-01-21 22:01:27 +01:00
Fise 87b4737901 Drognan shopper fixes (#468)
* Improved navigation in and out of town. New options for tuning it

* Delete a2_town_drognan_fire.png
2022-01-21 21:53:44 +01:00
Legit 376547ebfe Nihlathak cold immune accuracy update (#463)
* Nihlathak cold immune accuracy update

Much higher accuracy

* nihl health bar

* fixed pathing issue bottom left
2022-01-19 07:22:13 +01:00
skizotenigma 7935da58a7 Update pather.py (#459) 2022-01-19 07:16:13 +01:00
Vladimir Makaev b890ff266f Find D2R window using win32api instead of pattern matching (#453) 2022-01-18 20:32:35 +01:00
Legit c939877c7b Nihlathaks no longer count cold immune run as fail (#448)
Changed false to True
2022-01-17 16:17:51 +01:00
aeon0 1bc392327c Hot fix (#454)
* fix pather timeout

* revert changes
2022-01-15 11:06:41 +01:00
aeon0 df0e70470c Update version.py 2022-01-15 11:02:52 +01:00
aeon0 2eb9f84520 Make config static and global (#451) 2022-01-14 23:22:22 +01:00
aeon0 5c6fd83155 Update pather.py 2022-01-14 16:57:10 +01:00
aeon0 6226956af4 Update version.py 2022-01-14 15:39:42 +01:00
853 changed files with 11620 additions and 3986 deletions
+3
View File
@@ -15,6 +15,8 @@ generated/
botty_v*/
custom.ini
config/custom.ini
config/custom.*.ini
*info_log_parsed.txt
*info_*.png
.vscode
.vs/
@@ -26,3 +28,4 @@ stats/
.coverage
htmlcov/
coverage.xml
utils/live-view/
+40 -30
View File
@@ -4,9 +4,9 @@ Pixelbot for Diablo 2 Resurrected. This project is for informational and educati
[**Download here**](https://github.com/aeon0/botty/releases) and got to have a [**Discord**](https://discord.gg/Jf3J8cuXWg) nowadays I guess :man_shrugging:
## Getting started & Prequists
- D2r needs to be in English Language,
- Botty currently works with 720p D2r window (will be adjusted automatically on auto settings)
## Getting started & Prerequisites
- D2R needs to be in English Language,
- Botty currently works with 720p D2R window (will be adjusted automatically on auto settings)
### 1) Graphics and Gameplay Settings
@@ -15,11 +15,11 @@ All settings will automatically be set when you execute `main.exe` and press the
### 2) Supported builds
Check the documentation for **param.ini** further down. Different Sorc builds, Hammardin, Barb, Trapsin are already implemented to different extents. It is quite straightforward to implement new classes. Give it a go if you like!
Check the documentation for **params.ini** further down. Different Sorc builds, Hammerdin, Barb, Trapsin are already implemented to different extents. It is quite straightforward to implement new classes. Give it a go if you like!
### 3) Start Location
Open up D2R and wait till you are at the hero selection screen. Make sure the char you running with is selected and will be in any of Act 3, 4 or 5 in the respective difficulty you set in the **param.ini** once the bot starts the game.
Open up D2R and wait till you are at the hero selection screen. Make sure the char you running with is selected and will be in any of Act 3, 4 or 5 in the respective difficulty you set in the **params.ini** once the bot starts the game.
### 4) Start Botty
@@ -34,14 +34,14 @@ To check if you graphic settings are good and if the bot would pick up items the
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
## params.ini
All botty configuration files are located in the __config__ folder. To ease the switch to new botty versions, you can also overwrite any of the .ini fields in a **custom.ini** file. When a new version of botty is released you just copy the file to the new version without having to port all your **param.ini** changes to the new version. Example:
All botty configuration files are located in the __config__ folder. To ease the switch to new botty versions, you can also overwrite any of the .ini fields in a **custom.ini** file. When a new version of botty is released you just copy the file to the new version without having to port all your **params.ini** changes to the new version. Example:
```ini
; custom.ini - overwrites 3 params in the param.ini
; custom.ini - overwrites 3 params in the params.ini
[general]
monitor=1
name=MyCustomName
[routes]
run_pindle=1
@@ -50,21 +50,21 @@ 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 |
| custom_message_hook | Add your own message hook here to get messages about drops and botty status updates, discord webhook is default |
| logger_lvl | Can be any of [info, debug] and determines how much output you see on the command line |
| max_game_length_s | Botty will attempt to stop whatever its doing and try to restart a new game. Note if this fails, botty will attempt to shut down D2R and Bnet |
| randomize_runs | 0: the order will be as seen in the params.ini. 1: the order will be random |
| difficulty | Set to `normal` `nightmare` or `hell` for game difficulty |
| message_api_type | Which api to use to send botty messages. Supports "generic_api" (basic discord), or "discord" (discord embeds with images).
| discord_status_count | Number of games between discord status messges being sent. Leave empty for no status reports.
| name | Name used in terminal and discord messages. |
| custom_message_hook | Add your own message hook here to get messages about drops and botty status updates, discord webhook is default. |
| logger_lvl | Can be any of [info, debug] and determines how much output you see on the command line. |
| max_game_length_s | Max game length in seconds. Botty will attempt to stop whatever it's doing and try to restart a new game at specified interval. If this fails, botty will attempt to shut down D2R and Bnet. |
| max_consecutive_fails | Botty will stop making games if the number of consecutive fails reaches this max value. |
| randomize_runs | Randomize the order of `[routes]` specified in `params.ini`. |
| difficulty | Set to `normal` `nightmare` or `hell` for game difficulty. |
| message_api_type | Which api to use to send botty messages. Supports "generic_api" (basic discord), or "discord" (discord embeds with images). |
| discord_status_count | Number of games between discord status messages being sent. Leave empty for no status reports.
| discord_status_condensed | Toggles condensed view of Discord status messages. 0 Full text, 1 Condensed text.
| info_screenshots | If 1, the bot takes a screenshot with timestamp on every stuck / chicken / timeout / inventory full event. This is 1 by Default, so remember to clean up the folder every once in a while |
| loot_screenshots | If 1, the bot takes a screenshot with timestamp everytime he presses show_items button and saves it to loot_screenshots folder. Remember to clear them once in a while... |
| saved_games_folder | Optional folder path of Diablo 2 : Ressurrected saved games that will be used to overwrite when running the "auto settings" |
| d2r_path | Optional path to find the d2r.exe, if not set will be default to "C:\Program Files (x86)\Diablo II Resurrected\D2R.exe" when attempting to restart |
| restart_d2r_when_stuck | Set to `1` and botty will attempt to restart d2r in the case that botty is unable to recover its state (e.g: game crash) |
| 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] Defaults to `~\Saved Games\Diablo II Resurrected`. Used to store configuration settings for `f9` / auto settings. |
| d2r_path | [Optional] Path to `d2r.exe`. If not set, it will default to `C:\Program Files (x86)\Diablo II Resurrected\D2R.exe` when attempting to restart. |
| restart_d2r_when_stuck | Set to `1` and botty will attempt to restart d2r in the case that botty is unable to recover its state (e.g: game crash). |
| [routes] | Descriptions |
| ------------ | ------------------------------------------------------------------------ |
@@ -72,9 +72,9 @@ run_shenk=0
| run_pindle | Run Pindle in each new game. Select "1" to run it "0" to leave it out. |
| run_eldritch | Run Eldritch in each new game. Select "1" to run it "0" to leave it out. |
| run_shenk | Run shenk in each new game. Select "1" to run it "0" to leave it out. |
| run_nihlatak | Run Nihlatak in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| run_nihlathak | Run Nihlathak in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| run_arcane | Run Arcane Sanctuary in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| run_diablo | Run Diablo (just the Boss, not the trashmobs) in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| run_diablo | Run Diablo in each new game. Select "1" to run it "0" to leave it out. (Teleport required) |
| [char] | Descriptions |
| ------------------ | -------------------------------------------------------------------------------------------------|
@@ -94,7 +94,7 @@ run_shenk=0
| 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_order | Hotkey for battle orders from cta (only needed if cta_available=1) |
| battle_command | Hotkey for battle command from cta (only needed if cta_available=1) |
| 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 |
@@ -104,13 +104,14 @@ run_shenk=0
| atk_len_pindle | Attack length for hdin or number of attack sequences for sorc when fighting pindle |
| atk_len_eldritch | Attack length for hdin or number of attack sequences for sorc when fighting eldritch |
| atk_len_shenk | Attack length for hdin or number of attack sequences for sorc when fighting shenk |
| atk_len_nihlatak | Attack length for hdin or number of attack sequences for sorc when fighting nihlatak |
| atk_len_nihlathak | Attack length for hdin or number of attack sequences for sorc when fighting nihlathak |
| atk_len_cs_trashmobs | Attack length for hdin or number of attack sequences when fighting Trash Mobs in Chaos Sanctuary (Diablo) |
| atk_len_diablo_vizier | Attack length for hdin or number of attack sequences when fighting Sealboss A "Vizier of Chaos" in Chaos Sanctuary (Diablo) |
| atk_len_diablo_deseis | Attack length for hdin or number of attack sequences when fighting Sealboss B "Lord De Seis" in Chaos Sanctuary (Diablo) |
| atk_len_diablo_infector | Attack length for hdin or number of attack sequences when fighting Sealboss C "Infector of Souls" in Chaos Sanctuary (Diablo) |
| atk_len_diablo_infector | Attack length for hdin or number of attack sequences when fighting Diablo in Chaos Sanctuary |
| cs_clear_trash | If 1, most Trash mob packs from Chaos Sancturay Entrance to Pentagram and Seals A, B, C are cleared (NOT YET IMPLEMENTED). If 0, the run starts at Pentagram and just kills Sealbosses & Diablo |
| kill_cs_trash | If 1, most Trash mob packs from Chaos Sancturay Entrance to Pentagram are cleared. If 0, the run starts at Pentagram and just kills Sealbosses & Diablo (default) |
| cs_town_visits | If 1, it will go to town, buy pots & stash items between clearing the seals, set 0 to deactivate (default) |
| 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 |
@@ -123,9 +124,17 @@ run_shenk=0
| belt_hp_columns | Number of belt columns for healing potions |
| belt_mp_columns | Number of belt columns for mana potions |
| pre_buff_every_run | 0: Will only prebuff on first run, 1: Will prebuff after each run/boss |
| always_repair | 0: Will only repair when needed, 1: Will repair at the start of each run (EXPENSIVE FOR HIGH RUNEWORDS) |
| runs_per_stash | 0: Will only stash after intentional item pickup, 1+: Will force stash after # of runs set here (recommend at least 4 in case of accidental pickups) |
| runs_per_repair | 0: Will only repair when needed, 1+: Will force repair after # of runs set here |
| id_items | Will identify items at cain before stashing them. Cain must be rescued for this to work.|
| open_chests | Open up chests in some places. E.g. on dead ends of arcane. Note: currently bad runtime. |
| fill_shared_stash_first | Fill stash tabs starting from right to left, filling personal stash last |
| gamble_items | List of items to gamble when stash fills with gold. Leave blank to disable. Supported items currently include circlet, ring, coronet, talon, amulet
| [transmute] | Descriptions |
| ------------------ | -------------------------------------------------------------------------------------------------|
| transmute_every_x_game | How often to run transmute routine (currently transmutes flawless gems into perfect gems). Transmute routine depends on stashing routine it will only start after items stashing is done. E.g. so it could take more than X games to perform transmutes if there were no items to stash at the time. Default: 20 |
| stash_destination | Stash tabs by priority to place the results of the transmute. Default: 3,2,1,0. (It means the result will be first placed in stash 3 untils it's full, then to stash 2, etc. 0 - personal tab)
### Builds
| [sorceress] | Descriptions |
@@ -168,6 +177,8 @@ run_shenk=0
| shadow_warrior | Optional Hotkey for Shadow Warrior |
| lightning_sentry | Required Hotkey for Lightning Sentry |
| death_sentry | Required Hotkey for Death Sentry |
| cloak_of_shadows| Optional Hotkey for Cloak of Shadows |
| mind_blast | Optional Hotkey for Mind Blast |
| [barbarian] | Descriptions |
| -------------- | ----------------------------------------------------------------------------------- |
@@ -200,7 +211,6 @@ run_shenk=0
| 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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

+3 -1
View File
@@ -44,5 +44,7 @@
"Chat Background": 0,
"Always Run": 1,
"Quick Cast Enabled": 0,
"Display Active Skill Bindings": 0
"Display Active Skill Bindings": 0,
"Lobby Wide Item Drop Enabled": 1,
"Item Tooltip Hotkey Appender": 1
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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