pokemon-showdown-client/data/protocol.txt
2013-01-23 16:39:14 -08:00

172 lines
4.9 KiB
Plaintext

The Showdown protocol.
Changes from old protocol:
- "ally" renamed "p1", "foe" renamed "p2"
- Dashes in commands are no longer used, and abbreviations are used more liberally. It's still human-readable _enough_, and saves a tiny bit of bandwidth.
- "r-" and "residual " were merged into "-"
The main thing is that stuff that previously like:
stealth-rock-damage foe-Excadrill 3.125
residual foe-Rotom-W item-heal Leftovers
r-volatile ally-Seviper leech-seed
will look something like:
-damage p2-Excadrill 3.125 e:StealthRock
-heal p2-Rotom-W 6.25 i:Leftovers
-start p1-Seviper e:LeechSeed
Out-of-game
------------------------------------------------------------------------
p1 [user full]
p2 [user full]
Initialize a Side associated with [user], in the corresponding slot.
If [side full] is empty, remove the Side in that slot.
p3 [user full]
p4 [user full]
The same as p1 and p2. Can be ignored by clients that don't support 3-player and 4-player.
In 2v2, alliances are p1 and p3 against p2 and p4.
chat [user] [message full]
The log records that [user] says [message full].
join [user]
The log records that [user] joins the room.
leave [user]
The log records that [user] leaves the room.
message [message full]
[message full] is broadcast in the log.
rawmessage [rawmessage full]
[rawmessage full] is broadcast as raw HTML in the log.
Initialization
------------------------------------------------------------------------
poke [pokemon]
Initialize a pokemon with the given ID, if it exists.
previewpoke [pokemon]
Initialize a pokemon for the purposes of Team Preview.
Two differences from `poke`: Will initialize a new pokemon even if a pokemon with that ID already exists, and the initialized pokemon will have an unknown name.
preview
Start Team Preview.
endpreview
End Team Preview.
Gameplay (major)
------------------------------------------------------------------------
switch [pokemon]
Switch in [pokemon].
drag [pokemon]
Drag in [pokemon].
replace [pokemon]
[pokemon] replaces what was in its slot previously. Generally used for Illusion reveals.
move [pokemon] [move] [pokemon2] [attr]
Make [pokemon] use [move] against [pokemon2].
[attr] describes how to handle the move animation:
"miss" - the move missed
"notarget" - the move's target fainted before the start of the move, and no other suitable target was found
"fail" - the move hit, but failed for some reason
anything else - the move connected normally
faint [pokemon]
[pokemon] faints.
Health
------------------------------------------------------------------------
-damage [pokemon] [damage] [source]
[pokemon] receives [damage] damage.
-heal [pokemon] [damage] [source]
[pokemon] is healed by [damage] damage.
Effects
------------------------------------------------------------------------
-start [pokemon] [effect] [source]
The effect [effect] starts on [pokemon].
Clients that track effects should keep in mind that some effects may end without a message.
-turnstart [pokemon] [effect] [source]
The 1-turn volatile effect [effect] starts on [pokemon]. No corresponding "-end" message will be given, but the effect will expire at the end of the turn.
-end [pokemon] [effect] [source]
The effect [effect] ends on [pokemon].
Generally not used for abilities ("-start" is called on the new ability, which replaces it).
Generally not used for items ("-take" or "-start" is called, depending on whether the item was replaced or removed).
-remove [pokemon] [effect] [source]
The effect [effect] ends on [pokemon], unnaturally.
Aside from animation and message differences, this is identical to using "-end".
-activate [pokemon] [effect] [source]
The effect [effect] activates on [pokemon].
This is usually just a message and/or an animation; the results of the effect activation are described later.
-use [pokemon] [effect] [source]
[pokemon] uses the item [effect].
Aside from animation and message differences, this is identical to using "-activate" followed by "-end".
-take [pokemon] [effect] [source]
[pokemon]'s item [effect] is taken from it.
Identical to -end, but usually comes with a different animation and message.
-sidestart [user] [effect] [source]
The side condition [effect] starts on the side associated with [user].
-sideend [user] [effect] [source]
The side condition [effect] ends on the side associated with [user].
-fieldstart [effect] [source]
The field effect [effect] starts.
-fieldstart [effect] [source]
The field effect [effect] ends.
Boosts
------------------------------------------------------------------------
-boost [pokemon] [boost] [source]
Boost [pokemon] by [boost].
-setboost [pokemon] [boost] [source]
Set [pokemon]'s boost levels to [boost].
-clearboost [pokemon] [source]
Clear all of [pokemon]'s [boost].
-copyboost [pokemon] [pokemon2] [source]
Replace [pokemon]'s boosts with [pokemon2]'s boosts.
-swapboost [pokemon] [pokemon2] [source]
Swap [pokemon]'s boosts and [pokemon2]'s boosts.