Zarel/Pokemon-Showdown — pull request #136 by cathyjf (2013-01-16 05:16:36+00:00)
Title: Fixed Protect and friends in Gen 4; other revisions to Protect etc.

This commit makes several changes to Protect and related moves in both
Gen 4 and Gen 5:

1) In Gen 4, the chance of protecting succeeding does not fall below
1/8, which has now been corrected in this commit. Previously, the
chance of success in Gen 4 was allowed to drop all the way to
1/(2**32) as in Gen 5.

Please see upokecenter for the correct mechanics:
http://upokecenter.dreamhosters.com/dex/?lang=en&move=182

For Protect and friends, Smogon currently says that the chance of
success does not fall below 50%, which is inconsistent both with
the current Pokemon Showdown! behaviour and with upokecenter. It
is pretty much certain that upokecenter is accurate here, since it
is based directly on the in-game data. This commit implements the
upokecenter mechanics.

2) This commit also consolidates some duplicate code with Protect and
friends by moving the miss chance logic to an event of the 'stall'
volatile called onStallMove. This allows me to remove some
duplicate code from moves.js.

3) Currently, some but not all of Protect and friends have a flag
called stallingMove set to true. This flag does not appear to be
used for anything. However, for consistency, I have set it to true
for all the "stall moves", as opposed to just a subset of them.