install.bat:
- Add conda self-test (conda --version) before env create
- Verify botty python.exe exists after env creation
- Smoke-test key imports (cv2, tesserocr, discord, etc.)
CI (.github/workflows/ci.yml):
- Add test_setup_bat_files.py to test matrix
test/test_setup_bat_files.py (7 tests):
- All expected .bat files exist
- No hardcoded usernames (alex, alexpolo, ultimate) in run scripts
- No absolute home paths in run scripts (must use %~dp0 / %USERNAME%)
- All run_*.bat source find_python.bat (no duplicated conda detection)
- find_python.bat checks >= 6 conda locations
- install.bat has conda self-test and python verification
- Read character .key file from Saved Games / D2R install dir / APPDATA
- Auto-fill empty hotkeys in [char] section (inventory, belt, potions, etc.)
- Match skill slots to configured skills for validation
- Normalize key variants (left alt ~ alt, left shift ~ shift)
- params.ini values always take priority over detected bindings
- Warn on genuine mismatches between config and .key file
* init, wip
* time to test
* remove unused dataclass
* tests passing, just need to run in-game
* fix wait logic
* add threading lock, delete excess funcs
* start putting best_match back in to search_and_wait()
* bugfixes, found a bad template
* scope
* fix npc detect
* added mob detection to CS to speed up runs
* refactoring - redemption does not work
* remove unused filterimage param for template_finder.search_and_wait
* get rid of selfs, add live view within mob_detection.py
* mobcheck(self) -> mobcheck()
* cleanup, img as an arg to mobcheck
* prefix functions for encapsulation, cleanup redundant code
* simplify further
* trim
* simplify live-viewer, move
* corrected liveviewer -- opencv hue ranges to 180 not to 255
* rename funcs
* consolidate live-view into target_detect.py
* silly ide
* fix nonetype error
fox nonetype error - but no mobs are detected anymore :(
* script runs, but fails to deteect mobs
* add pytest for target detection, fix target sorting
* revert info_ss
* running now! added "mercwait" to debug runtime
* added testing back to pather.py
* update pytest, discrete blue/green filtering, cleanup code
* fix NoneType, add negative test
* consolidate tests
* fix oopsie
* add config param
* fix config param
* fixed atk sequences & logging spam
ready to merge after my final 2 tests
* undo bad import
Co-authored-by: mgleed <[email protected]>
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.)
* 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
* automatically calculate offsets, not-yet working
* space
* space
* float to int
* working
* clean
* clean2
* auto adjust windowed mode depending on screen res and botty res
* clean screen instance, fix tests
* remove test png
Co-authored-by: aeon0 <[email protected]>