If, during effect activation, a Pokemon isn't where it's supposed to be, we search the rest of the player's team for it. For instance, when Destiny Bond activates, Deoxys has already fainted, so it's not where we expect it to be. Normally, we search the player's team for Deoxys, find the Deoxys, and Destiny Bond activates as normal. The problem comes in formats without Species Clause. We might find the wrong Deoxys! Normally, this isn't a big problem. For a Pokemon to match, it has to have the exact same name, so the message displayed is still "Deoxys took the foe's Blaziken down with it!" and everything goes on normally. The problem comes in Doubles formats without Species Clause. Finding the wrong Deoxys overwrites its slot number, which, if it's an active Deoxys, puts it in an inconsistent state, causing crashes later on. This fix changes it so if a Pokemon isn't where it's supposed to be, we search the rest of the player's team, excluding other active Pokemon, for it. This renames the previous isInactive flag in getPokemon to isSwitch, which more accurately describes how its matching works.
Pokémon Showdown Client
Navigation: Website | Server repository | Client repository
Introduction
This is a repository for most of the client code for Pokémon Showdown.
This is what runs play.pokemonshowdown.com.
WARNING: You probably want the Pokémon Showdown server, if you're setting up a server.
Testing
You can make and test client changes simply by opening testclient.html.
This will allow you to test changes to the client without setting up your
own login server.
You can connect to an arbitrary server by navigating to
testclient.html?~~host:port. For example, to connect to a server running
locally on port 8000, you can navigate to testclient.html?~~localhost:8000.
The following things will fail in testclient.html:
- Registering
- Changing name to a registered name other than the one you are currently logged in with (however, changing to an unregistered name will work, and you can even change back to your original registered name afterward)
Everything else can be tested, though.
Warning
This repository is not "batteries included". It does NOT include everything necessary to run a full Pokémon Showdown client.
In particular, it doesn't include a login/authentication server, nor does it
include the database abstraction library used by the ladder library (although
it's similar enough to mysqli that you can use that with minimal changes).
It also doesn't include several resource files (namely, the /audio/ and
/sprites/ directories) for size reasons.
In other words, this repository is incomplete and NOT intended for people who wish to serve their own Pokémon Showdown client (you can, but it'll require you to rewrite some things). Rather, it's intended for people who wish to contribute and submit pull requests to Pokémon Showdown's client.
License
Pokémon Showdown's client is distributed under the terms of the AGPLv3.
WARNING: This is NOT the same license as Pokémon Showdown's server.