For side conditions, `onStart`/`onRestart`/`onResidual`/`onEnd` have been renamed `onSideStart`/`onSideRestart`/`onSideResidual`/`onSideEnd`, with the `onResidualOrder` properties renamed `onSideResidualOrder`. For field conditions, `onStart`/`onRestart`/`onResidual`/`onEnd` have been renamed `onFieldStart`/`onFieldRestart`/`onFieldResidual`/`onFieldEnd`, with the `onResidualOrder` properties renamed `onFieldResidualOrder`. (The `onField` and `onSide` part helps make it clear to the type system that the first argument is a Field or Side, not a Pokemon.) Side and field conditions can now use `onResidual` to tick separately on each pokemon in Speed order. `onResidualOrder` (the per-pokemon tick) can be timed separate from `onSideResidualOrder` (the per-condition tick), allowing conditions to end at a different priority than they tick per-pokemon. Relatedly, `onTeamPreview` and `onStart` in formats now need to be `onFieldTeamPreview` and `onFieldStart`. Unrelatedly, `effectData` has been renamed `effectState`, and the corresponding state containers (`pokemon.statusData`, `pokemon.speciesData`, `pokemon.itemData`, `pokemon.abilityData`, `field.weatherData`, `field.terrainData`) have been similarly renamed. I renamed the types a while ago, but I was holding off renaming the fields because it would be a breaking change. But this is a breaking change anyway, so we might as well do it now. Note: `onResidual` will tick even on `onSideEnd` turns, although `onSideResidual` won't. When refactoring weather, remember to check `this.state.duration` so you don't deal weather damage on the ending turn. Intended as a better fix for #8216 |
||
|---|---|---|
| .github/workflows | ||
| .vscode | ||
| config | ||
| data | ||
| databases/schemas | ||
| lib | ||
| logs | ||
| server | ||
| sim | ||
| test | ||
| tools | ||
| translations | ||
| .editorconfig | ||
| .eslintrc-no-types.json | ||
| .eslintrc.json | ||
| .gitattributes | ||
| .gitignore | ||
| .mocharc.json | ||
| .npmignore | ||
| .npmrc | ||
| build | ||
| CODEOWNERS | ||
| COMMANDLINE.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| old-simulator-doc.txt | ||
| package.json | ||
| pokemon-showdown | ||
| Procfile | ||
| PROTOCOL.md | ||
| README.md | ||
| simulator-doc.txt | ||
| tsconfig.json | ||
Pokémon Showdown
Navigation: Website | Server repository | Client repository | Dex repository
Introduction
Pokémon Showdown is many things:
-
A web site you can use for Pokémon battling
-
A JavaScript library for simulating Pokémon battles and getting Pokédex data
-
Some command-line tools for simulating Pokémon battles (which can be used in non-JavaScript programs)
-
A game server for hosting your own Pokémon Showdown community and game modes
Pokémon Showdown simulates singles, doubles and triples battles in all the games out so far (Generations 1 through 8).
Documentation quick links
-
PROTOCOL.md - The protocol used by the server to communicate with clients.
-
SIM-PROTOCOL.md - The protocol used for battles and battle messages.
-
CONTRIBUTING.md - Useful code standards to understand if you want to send pull requests to PS (not necessary if you're just using the code and not planning to contribute back).
-
Bot FAQ - An FAQ compiled by Kaiepi [Kaiepi] regarding making Pokemon Showdown bots - mainly chatbots and battle bots.
Community
PS has a built-in chat service. Join our main server to talk to us!
You can also visit the Pokémon Showdown forums for discussion and help.
If you'd like to contribute to programming and don't know where to start, feel free to check out Ideas for New Developers.
License
Pokémon Showdown's server is distributed under the terms of the MIT License.
Credits
Owner
- Guangcong Luo [Zarel] - Development, Design, Sysadmin
Staff
- Andrew Werner [HoeenHero] - Development
- Annika L. [Annika] - Development
- Chris Monsanto [chaos] - Development, Sysadmin
- Leonard Craft III - Research (game mechanics)
- Mathieu Dias-Martins [Marty-D] - Research (game mechanics), Development
Contributors