Skip to content

Releases: 40Cakes/pokebot-gen3

20241023.0

23 Oct 20:48
9af8423
Compare
Choose a tag to compare
  • Add support for Daycare mode with Japanese FireRed, migrate language-specific symbols to a YAML file (#471)
  • Improved battle-handling support in Japanese FireRed (#472)
  • Fixed an error message with console logging when encountering Pokémon that knows Curse (#474)

20241020.0

20 Oct 23:24
2ea9a7c
Compare
Choose a tag to compare
  • 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

18 Oct 22:10
f694e3e
Compare
Choose a tag to compare
  • Take abilities into account when calculating effective encounter rates (#450)
  • Fix resetting bot listeners after a soft reset, this fixes logging in Static Soft Resets among other things (#451)
  • Fix missing 'Total Encounters stat in some Discord messages (#452)

20241017.0

17 Oct 21:09
011f96f
Compare
Choose a tag to compare
  • 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

16 Oct 13:05
b33277f
Compare
Choose a tag to compare

Configuration changes

  • It is no longer necessary or possible to enable/disable automatic battling (setting battle: true in battle.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 of obs.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 the plugins/ directory. (This does not affect customcatchfilters.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 in battle.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

23 Sep 22:19
fbba1de
Compare
Choose a tag to compare
  • Fixes an issue that made it necessary to run requirements.py manually for fresh installs. Now, running pokebot.py should do that automatically again.

20240912.0

13 Sep 02:35
20d3dcd
Compare
Choose a tag to compare
  • Adds some missing entries to the list of held items that should be removed when using Pickup (#394, #396)
  • Makes sure that all inputs are sent via the HTTP server's event stream endpoint (#397)

20240910.1

10 Sep 18:29
078158c
Compare
Choose a tag to compare
  • Fixes missing profiles/ directory for new users

20240910.0

10 Sep 13:01
cbd43e9
Compare
Choose a tag to compare
  • 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

09 Sep 14:28
a2e9cdc
Compare
Choose a tag to compare
  • 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)