• Check out the relaunch of our general collection, with classic designs and new ones by our very own Pissog!

Invalid New extension idea - checks and counters (gen9 randbats)

First, a little bit about myself: I am no developer but actually a Business System Analyst in real life. I'm a casual player that keep forgetting things and I came up with this simple idea. If anybody is interested I am planning to continue writing it down as a development lifecycle (sort of), with functional requirements, milestones and possible scenarios. So, here goes nothing:




CHECKS AND COUNTERS BROWSER EXTENSION FOR POKÉMON SHOWDOWN GEN 9 RANDOM BATTLES

INTRODUCTION

This post is to explain and propose a new browser extension idea, it is simple but it can help new players with the concept of checks and counters. Checks and counters are a core concept of pokémon battle and understanding them is key to winning battles and planning ahead. You have to know and remember things like pokémon that represent danger to your team, pokémon that stops your win condition, pokémon that you can use to overthrow the battle and so on and so forth. Those concepts may look simple but take quite a while to be fully understood by casual players.

The idea is to have a popup indicator that given a pokémon, will display four sets of information:
  • Pokémon that checks it revealed so far;
  • Pokémon that counters it revealed so far;
  • Pokémon it checks revealed so far;
  • Pokémon it counters revealed so far;

Let’s analyze this situation and think about Tsareena:

1762006890432.png

Just by giving it a first look, I can see that Gouging Fire is a huge threat to my Tsareena due to its typing being a good matchup for the opponent. Without going into any further calculations like comparing movesets and stats, let’s assume Gouging Fire counters my Tsareena. So we would have something like:

1762007589540.png

This would be the overall behavior of this new extension. Whenever I’d hover the mouse over my own Tsareena, this information would show up. If any other pokémon that can fit in one of the boxes shows up along the course of the game, they should also be classified and displayed.
Bear in mind that these four items are quite simple regarding their description, but they have a lot of complexity associated and are not quite straightforward, there are many factors that make pokémon check and counter other pokémon. We are going to have to go through several logic steps and achieve several milestones to have useful information that can help people in battles.

NARROWING IT DOWN TO RANDOM BATTLES

For this extension idea we are gonna be choosing to work exclusively in gen9 random battles and the sole reason for that is the availability of useful information. In theory, we could go for an overall random battles extension but that may be too much, we would have to tweak the logic between checks and counters for each generation and it is too much for this intended first version, so we’ll stick with gen9.
In random battles pokémon uses preset moves, and we can (kind of) know the moveset beforehand and that should raise our accuracy by a lot. As we will come to know, checks and counters can be totally changed by which moveset one pokémon is using in that battle, and depending on the situation, one pokémon can be a counter or check to another one if coverage moves or items are present, so knowing the possible movesets and roles is crucial.

1762007098681.png

Note that in the above example I’m using the extension Random Battles Tooltips https://www.smogon.com/forums/threads/pokémon-showdown-randbats-tooltip.3686306/
but the data that it shows is publicly available at pokémon showdown github repository
https://github.com/pkmn/randbats/blob/main/data/stats/gen9randombattle.json
The point here is that it is possible to know that Annihilape, even though it can vary a little, does have only one set, the Bulky Attacker, and we can also know the possible moves that might be in it. We can even see that three of those moves are guaranteed to be present: Bulk Up, Drain Punch and Rage Fist, while only the fourth one varies between Taunt, Rest and Gunk Shot. That is a lot of very good and useful information for calculating if either my pokémon checks or counters it, or the other way around.

1762007150352.png

For standard play, either being OU or lower tiers, we can’t have this kind of information as ready as we have in the random battle data repository. Even though we have the advantage of having team preview, we would have to assume that the opponent is using the standard moveset for all their pokémon, at least at the beginning. This directly sends the accuracy of checks and counters calculations down the drain, here are some reasons for that:
  • There can be pokémon with multiple viable movesets;
  • We can’t know the set for sure until the pokémon makes a move;
  • Mixed sets can lead to wrong assumptions;
  • Gimmicky sets or moves will always trick the algorithm;
One can say that some of that happens in random battles too but the caveat is that in random battles there is data promptly available and constantly updated. For standard play we would have to go find the standard movesets for each pokémon, they are indeed somewhere in smogon but we could never keep them up to date and organized without a huge effort. So, in the end, we stick to random battles and thank the people that make all this information public and hourly updated.



That is the introduction I've made for this idea. There are quite some steps to do if someone is interested, thanks for reading it all and please send me a message if you are interested. There is already some more material in the way regarding the first development goals.
 
All extensions currently extant for Pokemon Showdown are unofficial; if we wished to add this feature we'd just add it to the site by itself.
 
Back
Top