Releases: 40Cakes/pokebot-gen3
20241023.0
20241020.0
- Updates how the console reports about encounters look (#443, #459, #460)
- FireRed: Support for Roamer Reset mode in non-English games (#454)
- Fix plugin loading: Bot modes provided by plugins didn't show up anymore (#456, #457)
- Some fixes to stats migration (#455)
- FireRed: Support for Puzzle Solver mode in non-English games (#458)
- FireRed: Fix handling of Safari encounters in non-English games (#461)
- Fix Nidoran's gender being displayed twice in the bot message panel (#462)
- FireRed: Support for Static Run Aways mode in non-English games (#463)
- Fix issue when loading the OBS plugin (#464)
- FireRed: Fix detection of approaching trainers (#466)
- FireRed: Support for Static Gift Resets mode in non-English games (#468)
- Rock Smash, Roamer Reset modes: Check the correct party member for Repel level, add a better strategy for Granite Cave in the Wiki (#470)
20241018.0
20241017.0
- Install requirements to user directory instead of globally #441
- Fix move replacing logic if a Pokémon has been switched out during the battle #444
- Support for Level Grind mode in non-English FireRed games #446
- Support old mGBA shiny log format in stats migration script #445
- Fix 'is last Pokémon' check in Lose-on-Purpose battle strategy (resolves an issue in Kecleon mode if the player's Pokémon knew more than one move) #449
20241016.0
Configuration changes
- It is no longer necessary or possible to enable/disable automatic battling (setting
battle: true
inbattle.yml
). Each bot mode will decide itself whether battling is required or not. - The option
lead_mon_balance_levels
was removed. Instead, the Level Grind mode (formerly Pokecenter Loop mode) will give you that choice each time you start it. - Enabling the HTTP server is done in a different file (
http.yml
instead ofobs.yml
.) If you've been using the HTTP server, you will have to modify that file to enable it again. (Start the bot once with the new version so this file is being generated for you.) customhooks.py
was removed. If it still exist in your profiles directory, it will be ignored. If you've been using this, you can achieve similar things by creating a plugin in theplugins/
directory. (This does not affectcustomcatchfilters.py
.)
New stats system
Statistics are no longer being kept in JSON/CSV files as before. Instead, the bot stores everything in a sqlite database file called stats.db
within each profile's directory.
When you start a profile for the first time with this new version, the bot should automatically convert your old JSON/CSV files. They will remaing where they are, but they won't be updated anymore.
This also adds a few more things that are being tracked -- even though we don't use this information right now:
- For encounters, it tracks the map/coordinates where a Pokémon was encountered, the bot mode used, how the Pokémon was encountered (tall grass, while surfing, while fishing, hatching, ...)
- It also tracks the battle outcome. If a shiny encounter escapes or is defeated by accident, it will not count towards the goal display in the stream overlay.
- It tracks how many fishing attempts were successful, and the longest streak of unsuccessful fishing attempts.
New battle system
The auto-battle system also received an overhaul.
A lot of that is just boring behind-the-scenes stuff that will make it easier to implement different battle strategies, but it also features some better decision-making that takes type immunities and some abilities into account.
The new system properly handles 'mutual destruction', i.e. if both the player's and the opponent's Pokémon faint at the same time, due to moves like Explosion or recoil damage.
More new things
- The bot can now be configured to save automatically after catching a Pokémon (like the bot on stream does.) To enable this, set
save_after_catching: true
inbattle.yml
. It is disabled by default. - The Pokecenter Loop mode got renamed into Level Grind mode, to better reflect what it's actually supposed to accomplish. When selecting the mode, it will give you a choice between only levelling up your lead Pokémon or level-balancing the entire party.
- The auto-battle system received an overhaul, laying the groundwork for further improvements to battle strategies. For now, this improves the way the potentially most damaging move is chosen, and takes more abilities and immunities into account.
- Puzzle Solver mode supports Birth Island (Deoxys puzzle) on FR/LG as well.
- Feebas mode will automatically move around between the upper and lower lakes on Route 119. It will also swim up the waterfall if HM Waterfall is available.
- Feebas mode works in non-English versions of Emerald.
- The HTTP server supports streaming the bot's video and audio using a WebRTC stream. It should also perform a bit more reliably.
Bugfixes
- Fixed an error when trying to start Roamer Reset mode on FR/LG without owning the Sapphire #402
- Encounters will be tracked even in Manual mode #403
- Pickup checking/item retrieval on Ruby/Sapphire works #403
- Castform Static Gift Reset on Ruby/Sapphire works #403
- Fixed some auto-battle issues on Ruby/Sapphire #403, #421
- Auto-battling broke if both Pokémon fainted in the same turn (due to Explosion, or recoil damage, ...) #416
- Starters mode on R/S/E no longer hangs if the encountered Poochyena/Zigzagoon is shiny #418
- The bot will work with Python 3.13, though for the time being we still recommend staying with 3.12 -- some features might not be available #422, #429
Fixes for non-English Games
Thanks to Teras and Neka there are more features supported on non-English versions of Emerald, and even some on FireRed:
- Using items in non-English versions of Emerald works again (which fixes using Repel in Roamer Reset mode, among other things) #401
- Basic support for some features on non-English FireRed versions #428
- Learning/Replacing moves automatically on Emerald works #430, #431
- Fixes whiteout (all party Pokémon defeated) handling on Emerald #434
- Support for Spin, Sweet Scent, Fishing, Daycare, and Game Corner modes in non-English FireRed versions (except for Japanese) #435, #438
20240923.0
- Fixes an issue that made it necessary to run
requirements.py
manually for fresh installs. Now, runningpokebot.py
should do that automatically again.
20240912.0
20240910.1
- Fixes missing
profiles/
directory for new users
20240910.0
- Fixes Roamer Reset mode getting stuck while trying to apply Repel
- Adds missing requirement that could cause the bot to not start if the HTTP server was enabled
20240909.0
- Add more emulator speed choices (8×, 16×, 32×) (#362, #384)
- Add a simple plugin system (#370)
- Allow reading and setting inputs via the HTTP API (#371)
- Add a headless (no-GUI) mode (#372)
- Add move learn sets to species data, and TM/HM info to item data (#378, #380, #388, #389)
- Improved error handling in debug tabs (#373)
- Fixes an issue with the HTTP API where it would hang if the emulator speed was too high (#373)
- Fixed a path-finding issue on R/S/E where Route 104 and Rustboro City weren't considered to be connected (#373)
- Fixed Pickup checks so only items that can actually be acquired by Pickup are removed from the Pokémon (rather than any held item) (#373)
- Remove unused 'last encounter' and 'last shiny' events from HTTP stream API (#375)
- Fixes location of Lavaridge Pokémon Centre (affects Pokecenter Loop mode) (#376)
- Disincentivises the path-finding algorithm from stepping on warps (#376)
- Fixes an issue with the use_item_from_bag() function, which would get stuck if the item didn't trigger any message (such as the bicycle) (#376)
- Ensure that config files are not overwritten during updates (#383)
- Fix "Suicine" typo in default custom catch filters (#390)