Monday, February 18, 2019

Feature Spotlight: Wild Spawn Reporting

It's time again to look at a core feature of the upcoming Meowth 3.0. This time I'll be sharing the progress that has been made on the wild spawn reporting feature. This one was much simpler to develop than the new raid module, and I'm pretty happy with how it's turning out. But let's get down to the details.

What's Old

First, you can keep using the wild command exactly as you have been and it will continue to work. The only things you'll need to learn are how to take advantage of the new features. The reaction for marking yourself as "on the way" to a spawn is still there, as is the reaction for saying a wild Pokemon has despawned.

What's New

The big thing is that you're able to give Meowth a lot more detail about the wild spawn, if you choose. Here are the attributes of a wild spawn you are able to specify:
  • CP
  • IVs
  • Level
  • Moveset
  • Gender
This is in addition to being able to specify the form of the species, for the odd cases of species like Castform and Alolan forms.

In order to report attributes of a wild spawn, you must use a system that is similar to the search parameters you can use in Pokemon Go. For instance, to specify that a wild spawn has 500 CP, you can add "cp500" to your report. Because you can now include multiple terms in describing the wild spawn, this creates some ambiguity when parsing the command arguments. Specifically, where does the Pokemon end and the location begin? To handle this ambiguity, multi-word arguments describing the wild Pokemon must be enclosed in quotation marks. This is also true in the raid module, but there it's usually limited to reporting Alolan form bosses.

One thing that was a priority for me with this new feature was making sure that users weren't forced to spend a lot of time typing out the command with all the information. I didn't want users to have to wait until after catching a Pokemon to report it with all its attributes. Because of these concerns, it's also possible to add the information to a wild report after the initial command. It works like this. Let's say you spot a Combee and report it immediately. Combee's a fairly rare spawn at the moment so you want your fellow trainers to have as much time as possible to get there and catch it.


After you catch the Combee yourself, you realize it is a female Combee - making the spawn even rarer and more valuable. To add this attribute, you can hit the "information" reaction and let Meowth now the Combee is female.


Meowth helpfully provides a list of attributes you can specify along with how to set each of them. Meowth treats each "word" as a separate attribute, so it's important that you don't leave space between 'cp' and the number. Once you have replied to the message, Meowth deletes your reaction, the message prompting for information, and your reply to it, leaving only the edited wild spawn.

What Else Is Going On Behind the Scenes?

Boy am I glad you asked. There's quite a bit! Meowth is first checking that the species is even available in the wild when you report it. It's also validating the attributes when you specify them - you can't report a male Nidoran♀ for instance. If you specify level and IVs, it will calculate the CP for you. If you specify just level and CP, it will check that the CP falls within the possible CP range for that level. If you specify a moveset, Meowth checks that that moveset is available to the Pokemon. If you specify gender, Meowth checks to see if the species is one of those that has gender differences in appearance, and if it is, Meowth displays the image of the correct gender.
Meowth also takes advantage of the "gym matching" functionality, searching for gyms or Pokestops that it has in its database to provide precise directions whenever possible.

Any Bugs or Missing Functionality?

Just a bit! There's a feature that asks you to clarify if it finds multiple possible matches for a Pokemon name. This can lead to some strange results - for instance if you report a wild Pikachu, Meowth asks you to clarify if you meant Pikachu or Pichu, despite the fact that Pichu doesn't spawn in the wild. This is not really a bug per se but it is odd. Also, at the moment Meowth doesn't distinguish between legacy moves and currently available moves. So it will allow you to report a wild Dragonite with Draco Meteor for example.

I'm Super Stoked When Can I Try This Awesome Feature And When Will 3.0 Be Actually Released Also Did You Spend All of Our Money Yet

First off, wow, maybe try some punctuation. Second, no I haven't spent any of your money yet. The credit I had from Google Cloud Platform finally ran out the other day, and I'm very happy to say that you guys have been generous enough to cover Meowth's current operating costs for several months. Third, you can try the new wild feature today! There's a new channel for it in the support server. And fourth, I'm hoping 3.0 will be out no later than a month from now. I still have to write the modules for research and trades, I still have to add EX raid functionality to the raid module, I want to add a couple of general purpose server administration tools, and of course I have to make it possible to actually configure the bot for each server. I don't anticipate those being very complicated since a lot of the underlying framework is similar. And then of course 3.0 needs some actual error handling and documentation before it's released. But I believe the hardest work is over and I'm excited to get this thing to a stable release and into your servers as soon as possible. Thanks again for all your support and feedback!

Changes to Research

More details on today's changes to the research command are below. A new optional argument has been added to the research command. Thi...